Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názor k článku
Co nefunguje v MySQL a jak to obejít

Pavel Stěhule aura:89
16. 12. 2009 11:34

Re: funkcionalni indexy

celé vlákno

Optimalizace v db se soutřeďují na dohledání optimálního prováděcího plánu. Optimalizace samotných výrazů, alespoň co je mi známo, neexistuje. Důvod je prostý – rychlost zpracování dotazů. Pokud se nepoužíjí prepared staments, tak více-méně každý dotaz prochází stejnými etapami: parsování, transformace, generování a výběr plánu, provedení plánu. Důraz je na výběr optimálního prováděcího plánu – to má největší vliv na rychlost provedení dotazu. Optimalizace plánu je relativně náročná úloha – takže na vlastní parsování a transformace není čas. V případě SQL platí přelož, optimalizuj a zahoď (ve velké většině případů). Prepared statements případně fixované plány bohužel nejsou 100% řešení.

C/C++ má odlišný přístup – přelož, optimalizuj, ulož a volej opakovaně. Na samotnou optimalizaci je mnohem více času – a nikomu to nevadí – např. srovnejte čas překladu C a Pascalu.

Asi by bylo možné napsat kód, který by dokázal izolovat predikát – takový sw existuje – je ale dost možné, že tato samotná úloha by trvala déle než provedení zbytku dotazu. Takže zápis výrazů se nechává na inteligenci programátora – předpokládá se, že tak jednoduché pravidlo dokáže respektovat i cvičená opice – tudíž i sebeprostší kó­dér.