Dotaz požaduje specifická data z databáze. V SQL dotaz používá SELECT k určení sloupců, FROM k určení tabulek a WHERE k filtrování řádků. JOIN kombinuje tabulky. GROUP BY agreguje. ORDER BY třídí. Databáze analyzuje dotaz, plánuje strategii provádění a vrací výsledky. Stejnou otázku lze položit mnoha způsoby a některé způsoby jsou mnohem rychlejší než jiné.
Výkon dotazů závisí na několika faktorech. Indexy urychlují vyhledávání ve filtrovaných sloupcích. Plánovač dotazů volí mezi různými strategiemi provádění na základě statistik o datech. Zastaralé statistiky vedou ke špatným plánům. Napsání dotazu, který efektivně využívá indexy, je dovednost. Funkce aplikovaná na indexovaný sloupec v klauzuli WHERE zabraňuje použití indexu. Dotaz, který vybere všechny sloupce, když je potřeba jen několik z nich, plýtvá šířkou pásma a pamětí. Poddotaz, který se spouští jednou na řádek, je pomalý. Stejná logika jako join je rychlá. Optimalizace dotazů je zčásti umění, zčásti věda. Databáze poskytuje nástroje: plány EXPLAIN, profilery dotazů a čítače výkonu. Čtení těchto nástrojů vyžaduje praxi. Dotaz, který se spouští v milisekundách na malé datové sadě, může na velké trvat minuty. Rozdíl je často v plánu, nikoli v hardwaru.
Komponenty dotazu
- SELECT — sloupce, které se mají vrátit
- FROM — tabulky pro dotazování
- KDE — filtry řádků
- JOIN — sloučit tabulky
- GROUP BY – agregace řádků
- ORDER BY – seřadit výsledky
Dotaz je otázka. Databáze na ni odpovídá. Kvalita odpovědi závisí na tom, jak je otázka položena.
Comments
No comments yet. Be the first to share a thought.
Leave a comment