SQL Teljesítményfokozás-I.
Ebben a cikksorozatban igyekszem hasznos információkat adni azok részére, akik némi érdeklődést tanusítanak az adatbázis-kezelő rendszerek SQL-műveleteinek végrehajtási sebességével kapcsolatban (itt főleg a SELECT-re gondolok). Nosza rajta, kezdjük máris egy könnyedebb témával…
A kódok rangsorolása
Az adatbázis-kezelő rendszerek kézikönyvei alapján, teljesítmény szempontjából legjobb keresési feltételek azok, amelyek kevés soron, könnyen végrehajtható összehasonlításokat végeznek.
Lentebb látható lesz a keresési feltételek leggyakoribb típusai, méghozzá a legjobbtól a legelőnytelenebbig. Minden elem mellett egy pontszám található. Minél magasabb a pontszám, annál jobb az adott elem (annál inkább azt kellene használni az SQL – WHERE feltétel kialakításakor, ha… lehet).
1. A keresési feltételekben használható műveletek pontozása
Művelet Pontszám
= 10
> 5
>= 5
< 5
<= 5
LIKE 3
<>, != 0
2. A keresési feltételekben használható tényezők pontozása
Tényező Pontszám
Csak literál 10
Csak oszlop 5
Csak paraméter 5
Többtényezős kifejezés 3
Egész adattípus 2
Egyéb számtípus 1
Ideiglenes adattípus 1
Karakter adattípus 0
NULL 0
Nézzünk rá néhány példát is.
a. Példa: WHERE smallint_column = 12345
– 5 pont jár az egyenlőségjel bal oldalán szereplő egyedüli oszlopért,
– 2 pont jár az egész típusú tényezőért (ez a smallint_column),
– 10 pont jár az egyenlőségjelért, és
– 10 pont a jobb oldalon lévő egyedüli literálért (12345).
Ez összesen: 27 pont.
b. Példa: WHERE char_column >= varchar_column || ‘x’
– 5 pont jár az egyenlőségjel bal oldalán szereplő egyedüli oszlopért,
– 0 pont jár a CHAR típusú tényezőért (ez a char_column),
– 5 pont jár az nagyobb-egyenlős összehasonlításért,
– 3 pont jár a jobb oldalon szereplő többtényezős kifejezésért (varchar_column || ‘x’), és
– 0 pont jár külön a VARCHAR típusú tényezőért is (varchar_column).
Ez összesen: 13 pont.
Természetesen ez a két feltétel a végeredményét tekintve nem egyenértékű. A példa csak azt érzékelteti, hogy ahol lehet, ott célszerű végignézni a kombinációkat meg a pontszámokat, és az adott helyzetnek megfelelően kell dönteni. Elsősorban a rangsorolás elvét és magát a sorrendet kell megjegyezni.
A legtöbb pontot az a feltétel kapja (a leggyorsabb az lesz), amelyik a legkevesebb időt veszi igénybe. Általában attól gyorsabb egy feltétel, ha kevesebb sorral vagy egyszerűbb összehasonlításokkal dolozik.
Folytatjuk…