Pár základních rad na co si dát pozor při psaná SQL. Není to nic převratného a jestli vás něco zaujme, tak si detail dohledejte 😉

WHERE a JOIN na funkci

Omezit, raději zrušit, podmínky tvořené funkcí, např.:  DATEPART(QUARTER,@BUS_DATE). Vyhodnocování žere výkon (vyhodnocuje se na úrovni každého řádku, konstanta se rovnou použije). Pokud se tyto podmínky používají často (nejde o jeden výskyt), tak vytvořit proměnou, kterou naplnit funkcí a pak používat ji.

Konzistence datových typů

Pokud se dělá WHERE či JOIN na různých sloupcích z různých tabulek, tak musí mít stejné datové typy. Pokud mají rozdílné, tak se provádí konverze celého sloupce na jiný datový typ a to žere výkon.

Opakované JOINY (opakovaná data)

Pokud se opakovaně joinuje nějaká tabulka na více místech, tak je lepší z ní udělat CTE, temp tabulku či materializovanou tabulku. Opakovaná evaluace této tabulky žere výkon.

Indexy

Indexy asi moc neovlivníme, pokud zdrojem nejsou “naše” tabulky. Někdy, ale pomůže udělat si index na workové tabulce a pak ho zahodit.

Full join

Pokud se připojuje menší tabulka, tak použít třeba obyč join nebo left join.

Indexy a statistiky

Jak jsou udržované indexy a statistiky na podkladových datech?