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 

Search the boards