Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
A szelektív XML-indexek az XML-indexek egy másik típusa, amely a szokásos XML-indexek mellett az Ön számára is elérhető. A szelektív XML-index funkció céljai a következők:
Az SQL Serverben tárolt XML-adatokon keresztüli lekérdezések teljesítményének javítása.
A nagy XML-adatterhelések gyorsabb indexelésének támogatása.
A méretezhetőség javítása az XML-indexek tárolási költségeinek csökkentésével.
A szokásos XML-indexek fő korlátozása, hogy a teljes XML-dokumentumot indexelik. Ez számos jelentős hátrányhoz vezet, például a lekérdezési teljesítmény csökkenéséhez és a megnövekedett indexkarbantartási költségekhez, amelyek többnyire az index tárolási költségeihez kapcsolódnak.
A szelektív XML-index funkcióval csak bizonyos elérési utakat előléptethet az XML-dokumentumokból az indexbe. Az index létrehozásakor a rendszer kiértékeli ezeket az útvonalakat, és azokat a csomópontokat, amelyekre mutatnak, szétbontva tárolja az SQL Server relációs táblájában. Ez a funkció a Microsoft Research által az SQL Server termékcsapatával együttműködve kifejlesztett hatékony leképezési algoritmust használ. Ez az algoritmus egyetlen relációs táblára képezi le az XML-csomópontokat, és kivételes teljesítményt ér el, miközben csak szerény tárterületet igényel.
A szelektív XML-index funkció támogatja a szelektív XML-index által indexelt csomópontok másodlagos szelektív XML-indexeit is. Ezek a másodlagos szelektív indexek hatékonyak, és tovább javítják a lekérdezések teljesítményét.
A szelektív XML-indexek előnyei
A szelektív XML-indexek a következő előnyöket biztosítják:
A lekérdezési teljesítmény jelentősen javult az XML-adattípuson a tipikus lekérdezésbetöltések esetében.
A szokásos XML-indexekhez képest alacsonyabb tárolási követelmények.
Alacsonyabb indexkarbantartási költségek a szokásos XML-indexekhez képest.
Nem kell frissíteni az alkalmazásokat a szelektív XML-indexek előnyeinek kihasználásához.
Szelektív XML-indexek és elsődleges XML-indexek
Fontos
A jobb teljesítmény és a hatékonyabb tárolás érdekében a legtöbb esetben a szokásos XML-index helyett hozzon létre szelektív XML-indexet.
A szelektív XML-indexek azonban nem ajánlottak, ha az alábbi feltételek valamelyike teljesül:
Számos csomópont elérési útját leképezi.
A dokumentumstruktúra ismeretlen helyen lévő ismeretlen elemeire vagy elemeire vonatkozó lekérdezéseket támogatja.
Példa szelektív XML-indexre
Tekintsük a következő XML-töredékeket XML-dokumentumként egy körülbelül 500 000 sorból álló táblában:
<book>
<created>2004-03-01</created>
<authors>Various</authors>
<subjects>
<subject>English wit and humor -- Periodicals</subject>
<subject>AP</subject>
</subjects>
<title>Punch, or the London Charivari, Volume 156, April 2, 1919</title>
<id>etext11617</id>
</book>
Egy elsődleges XML-index létrehozása ennek az egyszerű sémanak a sok sorában hosszú időt vesz igénybe. Az adatok lekérdezése azzal is jár, hogy az elsődleges XML-index nem támogatja a szelektív indexelést.
Ha csak a /book/title ösvényen és a /book/subjects ösvényen kell lekérdeznie ezeket az adatokat, a következő szelektív XML-indexet hozhatja létre:
CREATE SELECTIVE XML INDEX SXI_index
ON Tbl(xmlcol)
FOR
(
pathTitle = '/book/title/text()' AS XQUERY 'xs:string',
pathAuthors = '/book/authors' AS XQUERY 'node()',
pathId = '/book/id' AS SQL NVARCHAR(100)
);
Az előző utasítás jó példa arra a CREATE szintaxisra, amelyet szelektív XML-index létrehozásakor használ. A CREATE utasításban először adja meg az index nevét, és azonosítsa a táblát és az indexelendő XML-oszlopot. Ezután adja meg az index elérési útját. Az elérési út három részből áll:
Az elérési utat egyedileg azonosító név.
Az elérési utat leíró XQuery-kifejezés.
Választható optimalizálási tippek.
További információ ezekről az elemekről: Kapcsolódó feladatok.
Támogatott funkciók, előfeltételek és korlátozások
Támogatott XML-funkciók
A szelektív XML-indexek támogatják az SQL Server által támogatott XQuery-t a exist(), value(), és nodes() metódusok belül.
A
exist(),value()ésnodes()metódusok esetében a szelektív XML-indexek elegendő információt tartalmaznak a teljes kifejezés átalakításához.A
query()ésmodify()metódusok esetében a szelektív XML-indexek kizárólag csomópontok szűrésére használhatók.A metódus esetében a
query()rendszer nem használ szelektív XML-indexeket az eredmények lekéréséhez.A metódus esetében a
modify()rendszer nem használ szelektív XML-indexeket az XML-dokumentumok frissítéséhez.
Nem támogatott XML-funkciók
A szelektív XML-indexek nem támogatják az XML SQL Server-implementációjában támogatott alábbi funkciókat:
Összetett XS-típusokkal rendelkező csomópontok indexelése: egyesítő típusok, sorozattípusok és listatípusok.
Bináris XS-típusú csomópontok indexelése: például base64Binary és hexBinary.
Az indexelni kívánt csomópontok megadása olyan XPath-kifejezésekkel, amelyek a helyettesítő karaktert
*tartalmazzák a végén: például/a/b/c/*,/a//b/*vagy/a/b/*:c.Bármely, a gyermektől, attribútumtól vagy leszármazotttól eltérő tengely indexelése. Az
//<step>eset speciális esetként engedélyezett.XML-feldolgozási utasítások és megjegyzések indexelése.
Csomópont azonosítójának megadása és lekérése az id() függvény használatával.
Előfeltételek
A következő előfeltételeknek létezniük kell ahhoz, hogy szelektív XML-indexet hozhasson létre egy felhasználói tábla XML-oszlopán:
A felhasználói tábla elsődleges kulcsán klaszteres indexnek kell lennie.
A felhasználói tábla elsődleges kulcsa csak 128 bájt méretű lehet, ha szelektív XML-indexekkel használják.
Ha szelektív XML-indexekkel használják, a felhasználói tábla fürtözési kulcsa csak 15 oszlopra korlátozódik.
Korlátozások
Általános követelmények és korlátozások
- Minden egyes szelektív XML-index csak egyetlen XML-oszlopban hozható létre
- Nem XML-oszlopban nem hozható létre szelektív XML-index
- A táblák minden XML-oszlopa csak egy szelektív XML-indexet tartalmazhat
- Minden tábla legfeljebb 249 szelektív XML-indexet tartalmazhat.
A támogatott objektumok korlátozásai
Szelektív XML-indexek nem hozhatók létre a következő objektumokon:
- XML-oszlopok egy nézetben
- Táblaértékű változó XML-oszlopokkal
- XML-típusváltozók
- Számított XML-oszlopok
- Több mint 128 beágyazott csomópontot tartalmazó XML-oszlopok.
Tárolási korlátozások
Az indexhez hozzáadható XML-dokumentum csomópontjainak száma véges. A szelektív XML-indexek egyetlen relációs táblába képezik le az XML-dokumentumokat. Ezért nem lehet 1024-nél több nem null oszlop a tábla adott sorában. Emellett a ritka oszlopok számos korlátozása a szelektív XML-indexekre is vonatkozik, mivel az indexek ritkán használt oszlopokat használnak a tároláshoz.
Az adott sorokban támogatott nem null oszlopok maximális száma az oszlopokban lévő adatok méretétől függ:
A legjobb esetben 1024 nem null értékű oszlop támogatott, ha az összes oszlop bit típusú.
A legrosszabb esetben csak 236 nem null oszlop támogatott, ha minden oszlop nagy méretű varchar típusú objektum.
A szelektív XML-indexek belsőleg egy-négy oszlopot használnak minden indexelt csomópont elérési úthoz. Az indexelhető csomópontok teljes száma 60 és több száz csomópont között mozog az indexelt útvonalakon lévő adatok tényleges méretétől függően.
A legrosszabb esetben, ha a csomópontokat részben vagy teljesen a
//használatával térképezzük fel a csomópont elérési útjának meghatározásánál, az indexelt csomópontok maximális száma 60.A legjobb esetben, ha a csomópontok leképezése a csomópont elérési útjának definíciója nélkül
//történik, az indexelt csomópontok maximális száma 200.
A szelektív XML-indexek az index létrehozásakor vagy módosításakor újraépülnek
Szelektív XML-index létrehozásakor vagy módosításakor az egyszálas, offline módban újraépül. Az ALTER-utasítások gyakran negatívan befolyásolják a lekérdezések teljesítményét az indexelt XML-dokumentumokon.
Egyéb korlátozások
A lekérdezési tippek nem támogatják a szelektív XML-indexeket.
Az Database Tuning Advisor nem támogatja a szelektív XML-indexeket és a másodlagos szelektív XML-indexeket.