602SQL-Úplná dokumentace Index  

Informace o optimalizaci a vyhodnocení dotazu

SQL server se pokouší každý dotaz před vyhodnocením optimalizovat, tedy transformovat tak, aby jeho vyhodnocení bylo co nejefektivnější.

Vývojář může získat informace o způsobu, kterým server bude dotaz vyhodnocovat, a data o náročnosti vyhodnocení jeho jednotlivých částí. K tom slouží akce Optimalizace v popup menu pro dotazy. Otevírá dialogové okno obsahující strom vyhodnocení dotazu.

Strom popisující vyhodnocení dotazu může mít dva rozsahy informací. Základní informace o struktuře vyhodnocování se v dialogovém okně zobrazí při jeho otevření. Detailní informace o počtu průchodů jednotlivými větvemi vyhodnocování a počtu zpracovaných záznamů v jednotlivých větvích se zobrazí až po stisku tlačítka Vyhodnotit dotaz. K poskytnutí těchto informací je potřebné plné vyhodnocení dotazu, které může trvat delší dobu.

Větve ve stromu odpovídají operacím jako JOIN, OUTER JOIN, UNION, INTERSECT, EXCEPT a vytváření skupin záznamů (GROUP BY). U každé tabulky je uvedeno, zda se v ní procházejí všechny záznamy (exhaustivní průchod) nebo zda se záznamy vybírají pomocí indexů. Podmínky na záznamy jsou uvedeny na těch místech, kde se vyhodnocují.

Informace o optimalizaci dotazu poslouží vývojáři aplikace k tomu, aby nalezl a odstranil místa, kvůli nimž se vyhodnocení zbytečně zdržuje. Prosívání velkého množství záznamů pomocí podmínek není efektivní - lepší je navrhnout indexy, které dovolí přímo najít hledané záznamy.