Autor Zpráva
r.huzva
Profil *
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
Č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
A proc je problem udelat jeste jeden dotaz s COUNTem bez LIMITu? Urcite bych to neresil na aplikacni vrstve...
Kajman_
Profil *
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
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
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 *
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: