SQL tippek (nem csak) SQL Server használóknak
Adatbázisok használata során az egyik leggyorsabb módja, hogy adatokat elemezzünk, ha SQL lekérdezést írunk. Akár adatelemzőként, akár adatbázis fejlesztőként kell lekérdezéseket írnunk, jó jöhetnek az alábbi kis tippek, hogy elkerüljünk néhány kellemetlen meglepetést!
Tipp 1
SELECT * használata van, amikor indokolt, de azért általában próbáljuk meg kerülni a programokban. Mindig vegyük figyelembe, hogy a * használatával nem határozzuk meg előre a végeredmény szerkezetét, hanem a tábla aktuális oszlop listáját kapjuk vissza. Legyünk figyelemmel arra, hogy mennyi adatot kell megmozgatni és mekkora a memóriaigény. Ha csak egy sima lekérdezést írtunk, akkor is ajánlatos TOP N kifejezést is használni.
Tipp 2
Tranzakciókat a lehető legrövidebb ideig használjuk és ne használjuk feleslegesen őket. Negatív hatással lehetnek a rendszer általános teljesítményére. Másik felhasználó munkáját is blokkolhatjuk. Nem jó általános megközelítés, ha egy tranzakciót nyitva hagyjuk és egy másik alkalmazásnak átadjuk a vezérlést.
Tipp 3
Ha egy tranzakcióban összetettebb számításokat kell végezni, akkor hagyjuk az UPDATE parancsokat a végére, hogy minél rövidebb ideig tartsuk fogva az erőforrásokat (exclusive lock).
Tipp 4
CURSOR és WHILE utasítások használatát lehetőleg kerüljük az SQL Server esetében. Teljesítmény problémák jelentkezhetnek.
Tipp 5
Mindig bizonyosodjunk meg arról, hogy a paraméterek, változók a megfelelő típusúak. A felesleges adatkonverziók sosem tesznek jók a teljesítménynek. Az implicit konverzió még adathibát is okozhat.
Tipp 6
SQL Server általában nem használja az adott oszlopon lévő indexet, ha a WHERE vagy JOIN feltételben függvényt használunk az oszlopon. Ez azt is jelentheti, hogy sokkal lassabb lesz a lekérdezésünk.
Tipp 7
Feleslegesen ne használjuk a DISTINCT, ORDER BY, UNION kifejezéseket. Minden esetben számítási, rendezési műveleteket kell végrehajtania az adatbázis motornak.
Tipp 8
Tábla változók használatának vannak előnyei és hátrányai is. Például SQL Server nem használ statisztikákat a tábla változókon. Ez jó lehet, ha nem támogatott a futási időben történő újra fordítás, de keresésénél, join műveleteknél lassú lehet a használat.
Tipp 9
Átmeneti táblának van statisztikája, ez a lekérdezéseket segíti, de minden alkalommal frissíteni kell a rendszernek, ha adatmódosítást végzünk. Ez kihathat a teljesítményre.
Tipp 10
HINTek használatával megmondjuk az adatbázis motornak, hogyan szeretnénk végrehajtani a lekérdezést. Nagyon hasznos lehet a használatuk, de óvakodjunk a felesleges használattól, mert nem biztos, hogy minden esetben jobb teljesítményt kapunk.
Tipp 11
Egyik leggyakrabban rosszul használt hint a NO_LOCK. Helytelen használatakor akár a lekérdezés eredményhalmaza is rossz lehet. Legtöbb ilyen esetben a READ_COMMITTED_SNAPSHOT használata javasolt.
Tipp 12
Vegyük azt figyelembe a tárolt eljárások készítésénél, hogy ha az eljárásunk funkciója nagy mértékben függ a paraméterektől, akkor a fordítási időben készített lekérdezési terv nem biztos, hogy megfelelő teljesítményt fogja produkálni minden esetre.
Tipp 13
NULL értékre mindig figyeljünk oda kiemelten. Ha lehet ne is engedjük használatát az oszlopokban. Máskülönben használjuk az IS NULL, IS NOT NULL, ISNULL() kifejezéseket. Legyünk tisztában azzal, hogy mit okoz az összeadásánál, vagy egy aggregálásnál, ha az egyik érték NULL.
SELECT 1+NULL, count(null), count(null+1), count(*) FROM Customers
Tipp 14
Nézetek használata általában támogatott. Ha van több összetett nézetünk, akkor nem biztos, hogy az adja a legjobb megoldást, ha ezeket joinoljuk, mert ilyenkor több táblát is feleslegesen olvashatunk. Gondoljuk át, hogy jobb-e, ha közvetlenül a táblákat vagy egyszerűbb nézeteket használunk a lekérdezéseinkben
Több információért iratkozz fel a Digital Academy hírlevelére vagy látogass el oldalunkra.
Konzultáció: Nexsis Mobile
Az itt leírtak egy bizonyos véleményt tükröznek. Nem jelentenek megoldást minden problémára. Mindig kérd ki mások véleményét is.