- SQL jazyk je velmi flexibilní jazyk
- Dvěma či více způsoby je možné získat stejná data
- Rychlost různých dotazů ovšem není úplně stejná, i přesto, že vrací stejná data
Proč optimalizovat:
- Jedná se především o minimalizaci nákladů: zdrojového času, kapacita dotazu, rychlejší odpovědi
Obecná pravidla:
- Vyjmenovat sloupce
- Používat co nejméně klauzuli LIKE
- Používat co nejméně klauzuli IN, NOT IN
- Používat klauzuli TOP, nebo LIMIT
- Na začátek dávat obecnější podmínky
- Výběr vhodného pořadí spojení
- Nastavit indexy
Pravidlo 1 - Vyjmenovat sloupce
- V SELECT dotazech nepoužívat seznam sloupců hvězdičku (*)
- Ve většina případech nepotřebujete ve výsledku všechny sloupce
SELECT * FROM UsersDoporučuji:
SELECT UserName, Login, FullName FROM Users
Pravidlo 2 - Co nejméně LIKE
- Nedoporučuje se používat pro vyhledání ve velkých textových polích
- Zamyslet se, jestli není možné vyhledání provést jinou metodou
Pravidlo 3 - Co nejméně IN, NOT IN
- Vhodnější je použít příkaz WHERE a WHERE NOT EXIST
SELECT Name, Year FROM Car WHERE Car IN ('Fiat', 'Skoda', 'Ford')Doporučuji:
SELECT Name, Year FROM Car WHERE Typ_Car = 'Automobile'
Pravidlo 3 - Používat TOP (LIMIT)
- V když vybíráme např. nejstaršího člověka
SELECT Year FROM People ORDER BY Alt DESC
- Dotaz vybere všechny záznamy, které následně setřídí
SELECT TOP 1 Year FROM People ORDER BY Alt DESCLepší řešení MY-SQL:
SELECT Year FROM People ORDER BY Alt DESC LIMIT 0,1
Pravidlo 4 - Na začátek obecnější podmínky
- V klauzuli WHERE zadávat na začátek obecné podmínky, které vyberou nejmenší počet záznamů
SELECT Name, Year FROM People WHERE Alt > '18' AND Sex = 'Woman'Doporučuji:
SELECT Name, Year FROM People WHERE Sex = 'Woman' AND Alt > '18'
Žádné komentáře:
Okomentovat