Autor | Zpráva | ||
---|---|---|---|
r.huzva Profil * |
#1 · Zasláno: 4. 2. 2008, 15:49:49
Dobrý den,
když mám MySQL dotaz, kde používám LIMIT, tak jak (co nejjednodušeji) zjistit - pokud možno bez dalšího požadavku - počet "nelimitovaných" řádků. Jediné co mě napadá je položit dotaz se stejnou podmínkou, ale ptát se na COUNT(*), nebo (asi nejhorší varianta) položit nelimitovaný dotaz, žádané řádky oddělit aplikační vrstvou a celkový počet je počtem vrácených řádků. Ale oboje to odporuje už zadání mého dotazu. Čekal bych, jestli neexistuje něco jako SELECT tbl.*, UNLIMITED_ROWS FROM.... |
||
djlj Profil |
#2 · Zasláno: 4. 2. 2008, 15:51:43
Čekal bych, jestli neexistuje něco jako SELECT tbl.*, UNLIMITED_ROWS FROM....
Skoro. http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#func tion_found-rows |
||
james Profil |
#3 · Zasláno: 4. 2. 2008, 17:07:26
A proc je problem udelat jeste jeden dotaz s COUNTem bez LIMITu? Urcite bych to neresil na aplikacni vrstve...
|
||
Kajman_ Profil * |
#4 · Zasláno: 4. 2. 2008, 18:00:39
james
Protože si tím jen přidáváte práci (na aplikační vrstvě) a žerete zbytečně výkon stroje. |
||
james Profil |
#5 · Zasláno: 4. 2. 2008, 18:10:53
Kajman_
Chapu. Ale pripada mi to trochu jako akademicka debata. Nez bych pokladal tenhle dotaz do konference, uz by ten 1 SELECT s COUNTem byl napsany. Nevim, o jake mnozstvi dat jde, ale pokud to nejsou rady tisicu, neresil bych. Daleko horsi varianta co se tyce naroku na system. prostredky mi pripada SELECT vsech dat z databaze (i kdyz pujde jen o idecka) a jejich pocitani na aplikacni vrstve. Nevim, jak je na tom mysql v porovnani s aplikacni vrstvou (ani nevime, jestli je to PHP, Java ci co), ale na 100% to vyjde lepe pocitat primo na databazi. Otazkou je, jestli neni pretezovana, a proto je vyhodnejsi to pocitat na nevytizenem aplikaci. To je ale pak na jinou debatu. |
||
djlj Profil |
#6 · Zasláno: 4. 2. 2008, 18:15:51
A proc je problem udelat jeste jeden dotaz s COUNTem bez LIMITu?
Protože to je zbytečné. Ale proč to dělat jednoduše, když to jde složitě, že? ;) |
||
Kajman_ Profil * |
#7 · Zasláno: 4. 2. 2008, 18:20:33
uz by ten 1 SELECT s COUNTem byl napsany
Ale pokud máte jednotný systém s mnoha sestavami, tak musíte ke každé dělat speciální dotaz jen na počet řádků. Při úpravách upravovat oboje. Prostě zbytečná práce navíc, když je tu ten odkazovaný flag SQL_CALC_FOUND_ROWS. A databáze bude, myslím, v tomhle případě taky raději za jeden dotaz než za dva. |
||
james Profil |
#8 · Zasláno: 4. 2. 2008, 18:30:31
djlj
Rozumim, ale zavani to trochu zasekem na prkotine :-). Asi zalezi na aplikaci. Pokud tam jde proste moc dotazu do databaze a je potreba optimalizovat pocet pristupu do databaze, mate pravdu. Jinak zbytecnej zasek... Kajman_ V puvodnim dotazu nebylo receno, kolik tam jde dotazu. Kdyz to r.huzva resi, asi to bude tak jak rikate. |
||
Časová prodleva: 16 let
|
0