Ladění dotazů: Zpracování dotazu

Při spuštění dotazu možná leckoho napadne otázka: Co se děje na pozadí? Které úkony musí být provedeny, aby uživatel dostal kýžený výsledek, který zapsal v textové podobě. Pojďme se celému procesu podívat na zoubek.
Query Processing Principle

Parser

Po té co napíšete dotaz, je text potřeba analyzovat. Text se rozdělí na jednotlivá slova, provede se validace klíčových slov a zkontroluje se, zda-li neobsahují nějaké překlepy. Pokud je vše v pořádku, výsledkem je Parse Tree, který je předán dále ke zpracování.

Algebrizer

Po úspěšném zpracování textu je potřeba provést kontrolu, zda existují v tabulce požadované sloupce, jejichž hodnoty mají být vypsány na výstup, atp. Identifikují se datové typy a provede se kontrola jejich kompatibility. Jinými slovy dojde ke spojení textové reprezentace tabulky v dotazu s tabulkou jakožto databázovým objektem. Výsledkem této činnosti je Algebrized Tree, což je v podstatě logická stromová struktura, která říká jaká data je potřeba načíst a z jakých tabulek.

Query Optimizer

Zatímco Algebrizer říká CO se má provést za operace, výstupem Optimizeru je plán, který říká JAK se má postupovat při provádění dotazu, aby byl proveden co nejrychleji a nejefektivněji. Načtení dat z tabulky lze provést mnoha různými způsoby. Aby se Optimizer dokázal rozhodnout, který způsob je nejefektivnější a které operace budou použity, potřebuje znát další dodatečné informace o tabulce jako např. existující indexy, statistiky, HW informace o serveru (velikost volné RAM, počet CPU,…) atp. Výstupem celé operace je Execution Plan, podle kterého se získají požadovaná data z databáze.

Execution Plan

Je textovým či grafickým znázorněním operací, které se provádí při běhu dotazu. MS SQL Server Management Studio dokáže plán zobrazit v grafické podobě. Nicméně existují i další nástroje, které poskytují větší komfort při práci s grafickou reprezentací plánu. Příkladem může být mnoha administrátory oblíbený SQL Sentry Plan Explorer, který byl uvolněn se všemi funkcemi pro volné použití.