SQL Query optimalizálás - alapok
Sziasztok!
SQL lekérdezések optimalizálásában szeretnék segítséget kérni.
Tudom, hogy ez rengeteg mindentől függ, amit csak egy konkrét eset ismeretében lehet normálisan megválaszolni, továbbá azt is tudom, hogy tele ven a net jobbnál jobb írásokkal, könyvekkel.
Amit viszont nem találok az olyan alapvető tanácsok, amik teljesen kezdőknek szólnak, akik mondjuk meg tudják már írni a lekérdezéseket, de nem tudják, hogy hogyan, miként érdemes őket tagolni, szerekeszteni, kitalálni, megváltoztatni, ahhoz, hogy ne kapjon szívrohamot az első magára valamit is adó db-s amikor meglátja őket.
Ha lenne bárkinek valamilyen linkje, vagy doksija ezzel kapcsolatban nagyon hálás lennék, de az is segítene ha aki olvassa, leírná szerinte mi az a tíz leggyakoribb hiba, amit kezdő lekérdezők el szoktak követni és a lekérdezés teljesítéményének a rovására megy.
Ha ehhez szükséges mindenképpen megadni,a kkor mondjuk legyen a környezet MSSQL vagy MaxDb, de engem inkább általános dolgok érdekelnének)
Olyasmire gondolok, mint például, hogy két tábla összekapcsolásánál melyiket írjuk elsőnk ha a táblák mérete között jelentős különbség van. És hasonók..
(Nemtudom, hogy ennek ven-e értelme de mintha olvastam volna ilyesmit)
A legkissebb segítségért is hálás lennék!
Még egyszer köszönöm!
■ SQL lekérdezések optimalizálásában szeretnék segítséget kérni.
Tudom, hogy ez rengeteg mindentől függ, amit csak egy konkrét eset ismeretében lehet normálisan megválaszolni, továbbá azt is tudom, hogy tele ven a net jobbnál jobb írásokkal, könyvekkel.
Amit viszont nem találok az olyan alapvető tanácsok, amik teljesen kezdőknek szólnak, akik mondjuk meg tudják már írni a lekérdezéseket, de nem tudják, hogy hogyan, miként érdemes őket tagolni, szerekeszteni, kitalálni, megváltoztatni, ahhoz, hogy ne kapjon szívrohamot az első magára valamit is adó db-s amikor meglátja őket.
Ha lenne bárkinek valamilyen linkje, vagy doksija ezzel kapcsolatban nagyon hálás lennék, de az is segítene ha aki olvassa, leírná szerinte mi az a tíz leggyakoribb hiba, amit kezdő lekérdezők el szoktak követni és a lekérdezés teljesítéményének a rovására megy.
Ha ehhez szükséges mindenképpen megadni,a kkor mondjuk legyen a környezet MSSQL vagy MaxDb, de engem inkább általános dolgok érdekelnének)
Olyasmire gondolok, mint például, hogy két tábla összekapcsolásánál melyiket írjuk elsőnk ha a táblák mérete között jelentős különbség van. És hasonók..
(Nemtudom, hogy ennek ven-e értelme de mintha olvastam volna ilyesmit)
A legkissebb segítségért is hálás lennék!
Még egyszer köszönöm!
Ld. másik téma
Van egy SQL teljesítményfokozás c. témához kapcsolódó könyvem, amiről még nem volt időm a Weblaborra könyvajánlót írni. Szívesen kölcsönadom.
off: tetszett?
Bár ha ajánlgattad a kérdezőnek akkor annyira rossz biztos nem lehet...
szerkesztve: Az "adatbázis-tervezés" című könyvhöz volt szerencséd? Érdemes az mellé elolvasni?
üdv,
Balázs
Megéri elolvasni
Az Adatbázis-tervezés-t nem olvastam.
kösszi
üdv,
Balázs
Te tudod
köszönet
Pénteken kellene kiselőadást tartanom a témából, de a fellelhető anyagok hatalmasak és nagyrészt komolyak. Pedig nekem tényleg csak a legalapabb szabályok javaslatokat kellene összegyűjtenem (minden egyes apróság sokat segítene), hogy mire figyeljen egy tapasztalatlan SQL lekérdező, ha a lehetőségeihez képest a legoptimálisabb sebességű lekérdezéseket szeretne írni.
Mégegyszer nagyon köszönöm!
Példák
- Indexek használata: táblákhoz amiknél gyakoribb az olvasás, mint a modosítás, lekérdezésekhez, amik a táblázat sorainak legfeljebb kb 20%-át olvassák
- Nézettáblák használata: ?
- in vizsgálat helyett exist vizsgálat
- Ahol lehet a Join hazsnálatának a mellőzése: ?
- Unio/projekció stb műveletek esetén, ha lehet engedjük meg a duplikált sorokat.
- Ha időszakosan ütemezhető, ha az írás/olvasás tegyük az adatot read-only-va, vagy használjuk a NOLOCK-ot.
Az én 2 fillérem
Performancián denormalizálással is lehet segíteni, ha az indokolt, és ezzel durván lehet gyorsítani is persze, cserébe redundáns lesz az adattárolás, és nem lesz olyan szép az adatbázis :)