Posted By: snake (:q!) on 'CZdatabases' Title: Re: SQL pomale s pribyvanim radku Date: Fri Feb 23 22:24:59 2007 > chova se celkem logicky. Sestavi prvnich 50 radku a tim to hasne. V druhem > pripade musi sestavit 7050 radku, coz chvili trva. Na vetsine databazi > offset > neznamena, ze predchozi hodnoty se nebudou zpracovavat. Mne to teda moc logicke neprijde. Asi jsem hodne natvrdlej, ale prosil bych to trochu vice rozvest a natvrdleho snaka popostrcit. Mne totiz prijde, ze jsou jen dve moznosti a obe dosahnou (=mely by) plus minus stejneho vysledku jak u prvnich 50, tak i u nejakych pozdnich 50: 1( nejdrive se musi vyhodnotit joiny, teprve pak je mozne serazovat a teprve po serazeni vzit tech spravnych 50; u obou padesatek, jak te ze zacatku, tak i "z konce" dojde k plnemu pospojovani joinu (asi nejnarocnejsi), v obou pripadech i k serazeni a teprve pak k te restrikci na spravnych 50. Suma sumarum zadny rozdil. 2) dotaz lze z nejakeho duvodu vyhodnotit tak, ze jde nejdriv serazovat a pak delat teprve ty narocne joiny (v tomhle pripade, kdy nejde o outer join, nicmene nejak netusim, jak by se neceho podobneho dalo dosahnout). Pak ale bude dotaz jiste rychlejsi nez v pripade 1, ale obe padesatky budou opet stejne rychle (nejdriv si je vyzobu z jedine spravne tabulky a teprve pak udelam ten narocny join). Opet zadny rozdil. Jediny zadrhel vidim v tom, ze tise predpokladam nejake razeni. Pokud se zadne ORDER BY nepouziva, jsou me domnenky zcestne, ale na druhou stranu mi vysledek dotazu pak prijde hodne nedeterministicky (prvnich 50 vykonanych dotazem pred vterinou muze byt presne tech samych 50 "z konce" vybranych dotazem spustenym po jedine vterine, alespon IMHO a ciste teoreticky)... Jinak netusim, co ten dotaz mel zarizovat, jestli je to jen dotaz na zobrazeni nejake www stranky nebo naopak neco, co jinemu programu umozni zpracovavat cely dlouhy vstup po castech, protoze dany program si neporadi s vice nez x radky. Jestli jde o druhou moznost, napada mne pouziti kurzoru: predpokladam, ze mySQL takove veci teda umi. Program si fetchuje tolik, kolik potrebuje, pricemz samotny dotaz se ale vykona jen jedinkrat. Ale to je reseni, ktere jde pouzit jen v pripade, ze tak jako tak budu chtit prechroustat celou tabulku (resp. cely ten nekolikanasobny join). No snad tu neplacam uplny voloviny... snake