Növelje az SQL lekérdezés teljesítményét az MSSQL segítségével. Ebből az informatív útmutatóból megtudhatja, hogyan optimalizálhatja lekérdezéseit a hatékonyság és a sebesség érdekében.

Az optimalizálatlan Microsoft SQL Server (MSSQL) SQL-lekérdezések gyengébb teljesítményt, erőforrás-túlhasználatot, következetlen adatokat, biztonsági hibákat és karbantartási nehézségeket okozhatnak. Ezek a problémák befolyásolhatják a program funkcionalitását, megbízhatóságát és biztonságát, ami frusztrálhatja a felhasználókat, és több pénzbe kerülhet.

Az SQL-lekérdezések MSSQL-ben történő optimalizálása kulcsfontosságú a hatékony és gyors teljesítmény eléréséhez. Az olyan technikák megvalósításával, mint az indexelés, a lekérdezés egyszerűsítése és a tárolási eljárások, a felhasználók ezt megtehetik egyensúlyba hozza a lekérdezési teljesítményt és az adatmódosítási teljesítményt, végső soron javítva az adatbázist teljesítmény.

Lekérdezésoptimalizálás indexeléssel

Adatbázis indexelés adatbázistáblákba rendezi és rendezi az adatokat, hogy gyorsabbá és hatékonyabbá tegye a keresést. Az indexelés az adatokról másolatokat hoz létre táblázatokban, és úgy rendezi őket, hogy a

instagram viewer
adatbázis motor könnyen navigálhat bennük.

A lekérdezés végrehajtása során az adatbázismotor az indexet használja a szükséges adatok megtalálásához, és gyorsan visszaadja az eredményeket, ezáltal felgyorsítja a lekérdezés végrehajtási idejét. Indexelés nélkül az adatbázismotornak a táblázat összes sorát át kell vizsgálnia, hogy megtalálja a szükséges adatokat, és ez idő- és erőforrásigényes lehet, különösen nagy táblák esetén.

Index létrehozása MSSQL-ben

Az index létrehozása relációs adatbázisokban egyszerű, és az MSSQL-t sem hagyják figyelmen kívül. Használhatja a INDEX LÉTREHOZÁSA utasítással indexet hozhat létre MSSQL-ben.

TEREMTINDEX index_neve
ON tábla_neve (oszlop1, oszlop2, ...);

A fenti SQL kódban index_neve az index neve, táblázat_neve a táblázat neve, és oszlop1, oszlop2és így tovább az indexelendő oszlopok nevei.

Így hozhat létre nem fürtözött indexet a Ügyfelek asztalok Vezetéknév oszlopot SQL utasítással.

TEREMT NEM KLASZTER INDEX IX_Customers_LastName
ON ügyfelek (Vezetéknév);

Az utasítás létrehoz egy nem fürtözött indexet, melynek neve IX_Customers_LastName a Vezetéknév oszlopa a Ügyfelek asztal.

Az indexelés költsége

Bár az indexelés jelentősen javíthatja a lekérdezés teljesítményét, ennek költsége van. Az indexelés további lemezterületet igényel az index tárolásához, és az indexelési műveletek lelassíthatják az adatmódosítási műveleteket, például a beszúrásokat, frissítéseket és törléseket. Adatmódosítás esetén frissítenie kell az indexet, és a frissítési művelet időigényes lehet nagy táblák esetén.

Ezért elengedhetetlen a lekérdezési teljesítmény és az adatmódosítási teljesítmény egyensúlyának megteremtése. Csak azokban az oszlopokban hozzon létre indexeket, amelyekben gyakran keres. Ugyancsak elengedhetetlen az index-erőforrás-használat rendszeres figyelemmel kísérése és a szükségtelen indexek eltávolítása.

Lekérdezésoptimalizálás a lekérdezés egyszerűsítésével

Az adatok elemzéséhez az összetett lekérdezések jól jönnek az adatok kinyeréséhez. Az összetett lekérdezések azonban hatással vannak a teljesítményre, és nem hatékony adatkinyerést eredményezhetnek.

A lekérdezések egyszerűsítése magában foglalja az összetett lekérdezések kisebb, egyszerűbbre bontását a gyorsabb, kevésbé erőforrásigényes feldolgozás érdekében.

A lekérdezések egyszerűsítése javítja a teljesítményt és megkönnyíti az adatok kinyerését azáltal, hogy az összetett lekérdezéseket egyszerűbb lekérdezésekre bontja, mivel az összetett lekérdezések szűk keresztmetszeteket okozhatnak a rendszerben. Nehezen érthetők, így a fejlesztők és az elemzők nehezebben tudják megoldani a problémákat vagy azonosítani az optimalizálási területeket.

Íme egy példa összetett lekérdezésre, amely MSSQL-en fut a vevői rendelések táblázatához, ahol a cél az adatok trendjeinek és mintáinak azonosítása:

KIVÁLASZTÁS
Ügyfél neve,
COUNT(order_id) AS total_orders,
AVG(rendelési_összeg) AS átlagos_rendelési_összeg,
SZUM(rendelési_összeg) AS összértékesítés
TÓL TŐL
parancsokat
AHOL
order_date '2022-01-01' ÉS '2022-12-31' KÖZÖTT
ÉS order_status = 'befejezve'
CSOPORTOSÍT
Ügyfél neve
HAVING
SZÁM(rendelésazonosító) > 5
RENDEZÉS
total_sales DESC;

A lekérdezés vevőnevekre és értékesítési információkra keres a 2022-ben teljesített rendelésekből, miközben az ötnél kevesebb megrendeléssel rendelkező ügyfeleket az összes értékesítés alapján, csökkenő sorrendben szűri.

A lekérdezés értékes betekintést nyújthat, de összetett, és végül tovább tart a feldolgozása, különösen, ha parancsokat táblázat sok bejegyzést tartalmaz.

Leegyszerűsítheti a lekérdezést, ha a lekérdezést kisebb lekérdezésekre bontja, amelyek egyenként futnak le.

- Szerezzen listát az ügyfelek nevéről és az általuk leadott megrendelések teljes számáról
KIVÁLASZTÁS
Ügyfél neve,
COUNT(rendelésazonosító) AS összesen_rendelések
TÓL TŐL
parancsokat
AHOL
order_date '2022-01-01' ÉS '2022-12-31' KÖZÖTT
ÉS order_status = 'befejezve'
CSOPORTOSÍT
Ügyfél neve
HAVING
SZÁM(rendelésazonosító) > 5;

-- Szerezze meg az átlagos rendelési összeget minden ügyfél számára
KIVÁLASZTÁS
Ügyfél neve,
AVG(rendelési_összeg) AS átlagos_rendelési_összeg
TÓL TŐL
parancsokat
AHOL
order_date '2022-01-01' ÉS '2022-12-31' KÖZÖTT
ÉS order_status = 'befejezve'
CSOPORTOSÍT
Ügyfél neve
HAVING
SZÁM(rendelésazonosító) > 5;

-- Szerezze meg az egyes ügyfelek teljes értékesítését
KIVÁLASZTÁS
Ügyfél neve,
SZUM(rendelési_összeg) AS összértékesítés
TÓL TŐL
parancsokat
AHOL
order_date '2022-01-01' ÉS '2022-12-31' KÖZÖTT
ÉS order_status = 'befejezve'
CSOPORTOSÍT
Ügyfél neve
HAVING
SZÁM(rendelésazonosító) > 5
RENDEZÉS
total_sales DESC;

Ez az egyszerűsített megközelítés az ügyfelek nevének és összes megrendelésének, átlagos rendelési mennyiségének és teljes értékesítésének lekérdezésére vonatkozó feladatokat külön-külön lekérdezi. Minden lekérdezésnek meghatározott célja van, és konkrét feladatokra optimalizálták, így az adatbázis kérésre könnyebben feldolgozható.

Tippek a lekérdezés egyszerűsítéséhez

A lekérdezések leegyszerűsítésekor elengedhetetlen, hogy minden alkalommal egy feladatra összpontosítson, hogy az adott feladatra optimalizált lekérdezéseket hozzon létre. Ha egyetlen feladatra összpontosít, jelentősen javíthatja a teljesítményt.

Ezenkívül fontos a jó elnevezési konvenciók használata, hogy a kód könnyebben érthető és karbantartható legyen. Könnyedén azonosíthatja a rendszer lehetséges problémáit és fejlesztési területeit.

Lekérdezésoptimalizálás tárolt eljárásokon keresztül

Tárolt eljárások előre megírt SQL utasítások egy adatbázisban tárolt halmazai. A tárolt eljárásokkal különféle műveleteket hajthat végre, a frissítéstől az adatok beszúrásáig vagy adatbázisból való lekéréséig. A tárolt eljárások paramétereket fogadhatnak el. Különböző programozási nyelvekből hívhatja őket, így hatékony eszköz az alkalmazásfejlesztéshez.

Íme egy példa egy tárolt eljárás létrehozására az MSSQL-hez, amely visszaadja egy részleg alkalmazottainak átlagos fizetését:

TEREMTELJÁRÁS [dbo].[GetAverageSalary]
@Osztálynév VARCHAR(50)
MINT
KEZDŐDIK
KIVÁLASZTÁSAVG(Fizetés) mint Átlagos fizetés
Az alkalmazottaktól
WHERE Osztály = @Osztálynév
VÉGE

A tárolt eljárásban definiáltunk egy ún @Osztálynév és használta a AHOL záradék az eredmények osztály szerinti szűréséhez. Te is használtad a AVG Az osztályon dolgozók átlagkeresetének kiszámítására szolgáló funkció.

Az MSSQL-ben tárolt eljárásokat a EXEC nyilatkozat.

A fenti tárolt eljárást a következőképpen hajthatja végre:

EXEC [dbo].[GetAverageSalary] @DepartmentName = 'Eladások'

A tárolt eljárásvégrehajtási utasításban átadja a Értékesítés érték az osztály neve. A kimutatás visszaadja az értékesítési osztály alkalmazottainak átlagos fizetését.

Hogyan javítják a tárolt eljárások a lekérdezés teljesítményét?

A tárolt eljárások jelentősen javíthatják a lekérdezés teljesítményét. Először is, a tárolt eljárások csökkentik a hálózati forgalmat azáltal, hogy az SQL utasításokat a szerver oldalon hajtják végre az adatok átvitele helyett oda-vissza a kliens és a szerver között, ezáltal csökkentve a hálózaton keresztül küldött adatok mennyiségét és a lekérdezésekre adott válaszokat idő.

Másodszor, lefordíthatja a tárolt gyorsítótárazási eljárásokat, ami azt jelenti, hogy a végrehajtási tervet a memóriában tárolja. Amikor meghívja a tárolt eljárást, a kiszolgáló a végrehajtási tervet a memóriából kéri le az újrafordítás helyett az SQL utasításokat, ezáltal csökkentve a tárolt eljárás végrehajtási idejét és javítva a lekérdezést teljesítmény.

Az MSSQL-t beállíthatja az Ubuntun

Az MSSQL jelentős lépéseket tett az Ubuntu és más Linux disztribúciók támogatásában. A Microsoft felismerte a Linux növekvő népszerűségét a vállalaton belül, és úgy döntött, hogy kiemelt adatbázis-kiszolgálójának elérhetőségét Linux platformokra is kiterjeszti.