Kezdőlap > Databases > SQL Teljesítményfokozás-I.

SQL Teljesítményfokozás-I.

2005. március 4. péntek

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…

Kategóriák:Databases