Fürtözött és nem fürtözött indexek leírva

  • 2019.11.02.
  • 4 perc olvasásra
    • M
    • M
    • C
    • M
    • r
    • +9

A következőre vonatkozik: SQL Server (az összes támogatott verzió) Azure SQL Database

Az index egy táblához vagy nézethez társított on-disk struktúra, amely felgyorsítja a sorok visszakeresését a táblából vagy a nézetből. Az index olyan kulcsokat tartalmaz, amelyek a táblázat vagy nézet egy vagy több oszlopából épülnek fel. Ezeket a kulcsokat egy olyan struktúrában (B-fa) tárolják, amely lehetővé teszi az SQL Server számára, hogy gyorsan és hatékonyan megtalálja a kulcsértékekhez társított sort vagy sorokat.

Egy táblázat vagy nézet a következő típusú indexeket tartalmazhatja:

  • Fürtözött

    • A fürtözött indexek kulcsértékeik alapján rendezik és tárolják az adatsorokat a táblázatban vagy a nézetben. Ezek az oszlopok szerepelnek az index definíciójában. Táblánként csak egy fürtözött index lehet, mert maguk az adatsorok csak egy sorrendben tárolhatók.
    • A táblában szereplő adatsorokat csak rendezett sorrendben tárolhatja, amikor a táblázat fürtözött indexet tartalmaz. Ha egy táblának fürtözött indexe van, akkor a táblázatot fürtözött táblának hívják. Ha egy táblának nincs fürtözött indexe, annak adatsorait egy rendezetlen, halomnak nevezett struktúrában tároljuk.
  • Nem fürtözött

    • A nem fürtözött indexek szerkezete elkülönül az adatsoroktól. A nem fürtözött index tartalmazza a nem fürtözött indexkulcs-értékeket, és minden kulcsérték-bejegyzésnek van mutatója a kulcsértéket tartalmazó adatsorra.

    • A nem fürtözött index-sor mutatója az adatsor indexét sor lokátornak nevezzük. A sor lokátor felépítése attól függ, hogy az adatlapok halomban vagy fürtözött táblában vannak-e tárolva. Egy halom esetében a sorkereső a sorra mutat. Fürtözött tábla esetén a sor lokátor a fürtözött indexkulcs.

    • Nem kulcs oszlopokat vehet fel a nem fürtözött index levélszintjére a meglévő indexkulcs-korlátok megkerülése érdekében, és teljes lefedettségű, indexelt lekérdezéseket hajthat végre. További információ: Indexek létrehozása a mellékelt oszlopokkal. Az indexkulcskorlátokról lásd: Az SQL Server maximális kapacitási specifikációi.

A fürtözött és a nem fürtözött indexek egyaránt egyediek lehetnek. Ez azt jelenti, hogy két sornak nem lehet ugyanaz az értéke az indexkulcs számára. Egyébként az index nem egyedi, és több sor is megoszthatja ugyanazt a kulcsértéket. További információkért lásd: Egyedi indexek létrehozása.

Az indexeket egy tábla vagy nézet automatikusan karbantartja, ha a tábla adatait módosítják.

További speciális célú indexek típusai: Indexek. / p>

Tárgymutatók és kényszerek

Az indexek automatikusan létrejönnek, amikor a táblázat oszlopaiban meghatározzák az ELSŐDLEGES KULCS és AZ EGYEDI korlátozásokat. Például, ha UNIQUE korlátozással rendelkező táblázatot hoz létre, az Database Engine automatikusan létrehoz egy nem fürtözött indexet. Ha konfigurál egy elsődleges kulcsot, akkor a Database Engine automatikusan fürtözött indexet hoz létre, kivéve, ha már létezik fürtözött index. Amikor megpróbál érvényesíteni egy PRIMARY KEY korlátozást egy meglévő táblán, és fürtözött index már létezik a táblán, az SQL Server az elsődleges kulcsot nem fürtözött index használatával kényszeríti ki.

További információ: Elsődleges kulcsok létrehozása és Hozzon létre egyedi korlátozásokat.

Hogyan használja az indexeket a Query Optimizer

A jól megtervezett indexek csökkenthetik a lemez I / O műveleteit és kevesebb rendszererőforrást emésztenek fel, ezáltal javítva a lekérdezés teljesítményét. Az indexek sokféle lekérdezésnél lehetnek hasznosak, amelyek SELECT, UPDATE, DELETE vagy MERGE utasításokat tartalmaznak. Vegye figyelembe az SELECT Title, HireDate FROM HumanResources.Employee WHERE EmployeeID = 250 lekérdezést az AdventureWorks2012 adatbázisban. A lekérdezés végrehajtásakor a lekérdezés-optimalizáló kiértékeli az összes rendelkezésre álló módszert az adatok lekérésére, és kiválasztja a leghatékonyabb módszert. Lehetséges, hogy a módszer egy táblázat beolvasása, vagy egy vagy több index beolvasása, ha vannak ilyenek.

Táblázat beolvasásakor a lekérdezésoptimalizáló beolvassa a táblázat összes sorát, és kivonja a megfelelő sorokat. a lekérdezés kritériumai. A táblázat beolvasása sok lemez I / O műveletet generál, és erőforrásigényes lehet. Azonban a táblázat beolvasása lehet a leghatékonyabb módszer, ha például a lekérdezés eredményhalmaza a táblából származó sorok nagy százalékát tartalmazza.

Amikor a lekérdezés-optimalizáló indexet használ, akkor a index kulcs oszlopok, megkeresi a lekérdezéshez szükséges sorok tárolási helyét, és kivonja az egyező sorokat abból a helyből. Általában az index keresése sokkal gyorsabb, mint a táblázat keresése, mert a táblázattal ellentétben az index gyakran nagyon kevés oszlopot tartalmaz soronként, és a sorok rendezett sorrendben vannak.

A lekérdezés-optimalizáló általában a leghatékonyabb módszert választja a lekérdezések végrehajtásakor. Ha azonban nem állnak rendelkezésre indexek, akkor a lekérdezés-optimalizálónak táblagép-ellenőrzést kell használnia. Az Ön feladata olyan indexek megtervezése és létrehozása, amelyek a legjobban megfelelnek a környezetének, hogy a lekérdezés-optimalizáló hatékony indexeket választhasson ki. Az SQL Server biztosítja az Adatbázis-motor hangolási tanácsadót, amely segít az adatbázis-környezet elemzésében és a megfelelő indexek kiválasztásában.

Fontos

További információ az indextervezési irányelvekről és a belső eszközöket lásd az SQL Server Index tervezési útmutatójában.

  • SQL Server Index tervezési útmutató
  • fürtözött indexek létrehozása
  • nem fürtös létrehozás Indexek

Leave a Reply

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük