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
XML indexet hoz létre egy meghatározott táblán. Indexet lehet létrehozni, mielőtt az adatok lennének a táblázatban. XML indexeket létrehozhatnak egy másik adatbázis tábláin egy minősített adatbázis név megadásával.
Megjegyzés:
Relációs index létrehozásához lásd: CREATE INDEX (Transact-SQL) (CREATE INDEX). A térbeli index létrehozásáról információért lásd: CREATE SPATIAL INDEX (Transact-SQL).
Transact-SQL szintaxis konvenciók
Szemantika
--Create XML Index
CREATE [ PRIMARY ] XML INDEX index_name
ON <object> ( xml_column_name )
[ USING XML INDEX xml_index_name
[ FOR { VALUE | PATH | PROPERTY } ] ]
[ WITH ( <xml_index_option> [ ,...n ] ) ]
[ ; ]
<object> ::=
{ database_name.schema_name.table_name | schema_name.table_name | table_name }
<xml_index_option> ::=
{
PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = { ON | OFF }
| IGNORE_DUP_KEY = OFF
| DROP_EXISTING = { ON | OFF }
| ONLINE = OFF
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
| XML_COMPRESSION = { ON | OFF }
}
Arguments
[ELSŐDLEGES] XML
Létrehoz XML indexet a megadott xml oszlopon. Amikor a PRIMER megadásra kerül, egy klaszterelt indexet hoznak létre, amelyben a klaszteres kulcs a felhasználói tábla klaszterező kulcsából és egy XML csomópontazonosítóból áll. Minden tábla legfeljebb 249 XML indexet tartalmazhat. Figyeld meg a következőket, amikor XML indexet hozol létre:
A felhasználói tábla elsődleges kulcsán fürtözött indexnek kell lennie.
A felhasználói tábla klaszterkulcsa 15 oszlopra korlátozott.
Egy táblázat minden xml oszlopa tartalmazhat egy elsődleges XML indexet és több másodlagos XML indexet.
Elsődleges XML indexnek kell léteznie egy xml oszlopon, mielőtt másodlagos XML indexet létrehozhatnának az oszlopon.
XML index csak egyetlen xml oszlopon hozható létre. Nem lehet XML indexet létrehozni egy nem-xml oszlopon, és nem lehet relációs indexet is létrehozni xml oszlopon.
Nem lehet XML indexet létrehozni, sem elsődleges vagy másodlagos, egy xml oszlopon egy nézetben, táblázatértékű változón, ahol xml oszlopok vannak, vagy xml típusú változókon.
Nem lehet elsődleges XML indexet létrehozni egy kiszámított xml oszlopon.
A SET opció beállításainak ugyanazoknak kell lenniük, mint az indexelt nézetekhez és a számított oszlopindexekhez. Konkrétan az ARITHABORT opciót ON-ra kell állítani, amikor XML indexet hoznak létre, illetve amikor az xml oszlopban értékeket helyezünk, törölnek vagy frissítenek.
További információ: XML-indexek (SQL Server).
index_name
Az index neve. Az indexneveknek egyedinek kell lenniük egy táblában, de nem kell egyedinek lenniük az adatbázisban. Az indexneveknek az azonosítók szabályait kell követnie.
Az elsődleges XML indexnevek nem kezdődhetnek a következő karakterekkel: #, ##, @, vagy @@.
xml_column_name
Az xml oszlop, amelyen az index alapul. Csak egy xml oszlop lehet egyetlen XML index definícióban megadni; azonban több másodlagos XML index is létrehozható egy XML oszlopon.
XML INDEX xml_index_name HASZNÁLATA
Megadja az elsődleges XML indexet, amelyet másodleges XML index létrehozásához kell használni.
FOR { VALUE | ÚT | TULAJDON }
Megadja a másodlagos XML index típusát.
VALUE
Másodlagos XML indexet hoz létre azokon az oszlopokon, ahol a kulcsoszlopok (csomópont értéke és útja) az elsődleges XML index részei.
ELÉRÉSI ÚTVONAL
Másodlagos XML indexet hoz létre oszlopoknál, amelyek az elsődleges XML indexben az útértékekre és csomópontértékekre épülnek. A PATH másodlagos indexben az út és a csomópont értékei kulcsfontosságú oszlopok, amelyek lehetővé teszik a hatékony keresést az útvonalak keresésekor.
TULAJDONSÁG
Másodlagos XML indexet hoz létre az elsődleges XML index oszlopain (PK, út és csomópont érték), ahol a PK az alaptábla elsődleges kulcsa.
<objektum>::=
Az indexelendő teljes vagy nem minősített objektum.
database_name
Az adatbázis neve.
schema_name
Annak a sémának a neve, amelyhez a tábla tartozik.
table_name
Az indexelendő tábla neve.
<xml_index_option> ::=
Megadja az index létrehozásakor használni kívánt beállításokat.
PAD_INDEX = { ON | KI }
Az indexek kitöltését adja meg. Az alapértelmezett KIKAPCSOLVA.
ON
A fillfactor által meghatározott szabad hely százalékát az index középszintű oldalaira alkalmazzuk.
A OFF vagy fillfactor nincs megadva.
A köztes szintű lapok kapacitása megközelíti a kapacitást, és elegendő helyet hagy az index által megengedett legnagyobb méretű sornak, figyelembe véve a köztes lapok kulcskészletét.
A PAD_INDEX opció csak akkor hasznos, ha a FILLFACTOR meg van jelölve, mert PAD_INDEX a FILLFACTOR által megadott százalékot használja. Ha a FILLFACTOR-hoz megadott százalék nem elég nagy egy sor kizárásához, az Database Engine belülről felülírja a százalékot, hogy a minimumot engedélyezze. A köztes indexoldalon a sor száma soha nem kevesebb, mint kettő, függetlenül attól, mennyire alacsony a fillitálló.
FILLFACTOR = fillfactor
Százalékos értéket ad meg, amely azt jelzi, hogy az adatbázismotornak mennyire kell az egyes indexlapok levélszintjének szintjét létrehoznia az index létrehozása vagy újraépítése során. Fillfactor egy egész értéknek kell lennie 1-től 100-ig. Az alapértelmezett érték 0. Ha a töltőfaktor 100 vagy 0, az Adatbázis Engine indexeket hoz létre, amelyekben a levéloldalak teljes kapacitásra vannak töltöttek.
Megjegyzés:
A 0 és a 100 kitöltési tényező értéke minden tekintetben megegyezik.
A FILLFACTOR beállítás csak akkor érvényes, ha az indexet létrehozzák vagy újraépítik. Az adatbázismotor nem tartja dinamikusan a lapokban megadott üres terület százalékos arányát. A kitöltési tényező beállításának megtekintéséhez használja a sys.indexes katalógusnézetet.
Fontos
Egy klaszterelt index létrehozása, amelynek FILLFACTOR értéke kevesebb mint 100, befolyásolja, hogy mennyi tárolóhelyet foglal el az adatok, mert az adatbázis motor újraosztja az adatokat, amikor létrehozza a klaszterelt indexet.
További információ: Kitöltési tényező megadása index.
SORT_IN_TEMPDB = { ON | KI }
Megadja, hogy ideiglenes rendezés esetén tárolja-e az eredményeket a tempdb-ben. Az alapértelmezett KIKAPCSOLVA.
ON
Az index felépítéséhez használt köztes rendezési eredményeket tempdb-ben tárolják. Ez csökkentheti az index létrehozásának idejét, ha a tempdb más lemezkészleten van, mint a felhasználói adatbázis. Ez azonban növeli az index buildelése során használt lemezterületet.
KI
A köztes rendezési eredmények ugyanabban az adatbázisban vannak tárolva, mint az index.
Az index létrehozásához szükséges felhasználói adatbázisban szükséges helyen túl a tempdb-nek nagyjából ugyanannyi plusz helynek kell lennie a köztes rendezési eredmények tárolására. További információért lásd SORT_IN_TEMPDB Indexek opcióját.
IGNORE_DUP_KEY = KIKAPCSOLT
XML indexekre nincs hatása, mert az indextípus soha nem egyedi. Ne állítsd be ezt az opciót ON-ra, különben hiba keletkezik.
DROP_EXISTING = { ON | KI }
Megadja, hogy a megnevezett, előre létező XML indexet eltávolítsák és újraépítsék. Az alapértelmezett KIKAPCSOLVA.
ON
A meglévő indexet törlik és újjáépítik. A megadott indexnévnek meg kell egyeznie a jelenleg meglévő index nevével; azonban az indexdefiníció módosítható. Megadhat például különböző oszlopokat, rendezési sorrendet, partíciós sémát vagy indexbeállításokat.
KI
Hiba jelenik meg, ha a megadott indexnév már létezik.
Az index típusa nem módosítható DROP_EXISTING használatával. Emellett egy elsődleges XML index nem definiálható másodlagos XML indexként, vagy fordítva.
ONLINE = KIKAPCSOLVA
Azt határozza meg, hogy az alapul szolgáló táblák és a kapcsolódó indexek nem érhetők el a lekérdezésekhez és az adatok módosításához az indexművelet során. Ebben az SQL Server verzióban az online indexépítések nem támogatottak XML indexekhez. Ha ez az opció ON-ra van állítva XML indexhez, hiba keletkezik. Vagy hagyd ki az ONLINE opciót, vagy állítsd az ONLINE-t KIKAPCSOLVA.
Egy offline index művelet, amely létrehozza, újraépít vagy eltávolít egy XML indexet, egy sémamódosítási (Sch-M) zárat szerez az asztalon. Ez megakadályozza, hogy minden felhasználó hozzáférjen az alapul szolgáló táblához a művelet során.
Megjegyzés:
Az online indexelési műveletek nem érhetők el a Microsoft SQL Server minden kiadásában. Az SQL Server kiadásai által támogatott funkciók listáját az SQL Server 2022 Kiadásai és támogatott funkciói című témakörben találja.
ALLOW_ROW_LOCKS = { ON | KI }
Megadja, hogy engedélyezettek-e a sorzárolások. Az alapértelmezett ON.
ON
Az index elérésekor sorzárolások engedélyezettek. Az adatbázismotor határozza meg a sorzárolások használatát.
KI
A sorzárak nem használhatók.
ALLOW_PAGE_LOCKS = { ON | KI }
Megadja, hogy engedélyezettek-e az oldalzárolások. Az alapértelmezett ON.
ON
Az index elérésekor az oldalzárolások engedélyezettek. Az adatbázismotor határozza meg az oldalzárolások használatát.
KI
Az oldalzárakat nem használja a rendszer.
MAXDOP = max_degree_of_parallelism
Felülírja az index művelet során a Configure the max degree of parallelism Server Configuration Option konfigurációs opciót. A MAXDOP használatával korlátozhatja a párhuzamos terv végrehajtásához használt processzorok számát. A maximális érték 64 processzor.
Fontos
Bár a MAXDOP opció szintaktikailag minden XML indexhez támogatott, egy elsődleges XML index esetén a CREATE XML INDEX csak egyetlen processzort használ.
max_degree_of_parallelism lehet:
1
Letiltja a párhuzamos tervgenerálást.
>1
A párhuzamos indexműveletekben használt processzorok maximális számát a megadott számra vagy annál kevesebbre korlátozza az aktuális rendszerterhelés alapján.
0 (alapértelmezett)
A processzorok tényleges számát használja, vagy kevesebbet az aktuális rendszerterhelés alapján.
További információ: Párhuzamos indexelési műveletek konfigurálása.
Megjegyzés:
A párhuzamos indexműveletek nem érhetők el a Microsoft SQL Server minden kiadásában. Az SQL Server kiadásai által támogatott funkciók listáját az SQL Server 2022 Kiadásai és támogatott funkciói című témakörben találja.
Megjegyzések
Az xml adattípusokból származó számítási oszlopok kulcsként vagy nem kulcsoszlopként indexelhetők, amennyiben a kiszámított oszlop adattípusa indexkulcs vagy nem kulcsoszlopként engedélyezett. Nem lehet elsődleges XML indexet létrehozni egy kiszámított xml oszlopon.
Az XML indexekről szóló információk megtekintéséhez használja az sys.xml_indexes katalógus nézetet.
További információért az XML indexekről lásd: XML indexek (SQL Server).
XML-tömörítés
A következővonatkozik: SQL Server 2022 (16.x) és újabb verziók, Azure SQL Database és felügyelt Azure SQL-példány.
- Az XML-indexek nem öröklik a tábla tömörítési tulajdonságát. Az indexek tömörítéséhez explicit módon engedélyeznie kell az XML-tömörítést AZ XML-indexeken.
- A másodlagos XML indexek nem öröklik a Primary XML index tömörítési tulajdonságát.
- Alapértelmezés szerint az XML-indexek XML-tömörítési beállítása KI értékre van állítva az index létrehozásakor.
További megjegyzések az indexkészítésről
További információért az index létrehozásáról lásd a CREATE INDEX (Transact-SQL ) "Megjegyzések" szakaszát.
Példák
A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.
A. Elsődleges XML index létrehozása
A következő példa elsődleges XML indexet hoz létre a táblázat oszlopán CatalogDescriptionProduction.ProductModel .
IF EXISTS (SELECT * FROM sys.indexes
WHERE name = N'PXML_ProductModel_CatalogDescription')
DROP INDEX PXML_ProductModel_CatalogDescription
ON Production.ProductModel;
GO
CREATE PRIMARY XML INDEX PXML_ProductModel_CatalogDescription
ON Production.ProductModel (CatalogDescription);
GO
B. Elsődleges XML index létrehozása XML tömörítéssel
A következővonatkozik: SQL Server 2022 (16.x) és újabb verziók, Azure SQL Database és felügyelt Azure SQL-példány.
A következő példa elsődleges XML indexet hoz létre a táblázat oszlopán CatalogDescriptionProduction.ProductModel .
IF EXISTS (SELECT * FROM sys.indexes
WHERE name = N'PXML_ProductModel_CatalogDescription')
DROP INDEX PXML_ProductModel_CatalogDescription
ON Production.ProductModel;
GO
CREATE PRIMARY XML INDEX PXML_ProductModel_CatalogDescription
ON Production.ProductModel (CatalogDescription)
WITH (XML_COMPRESSION = ON);
GO
C. Másodlagos XML index létrehozása
A következő példa másodlagos XML indexet hoz létre a táblázat oszlopán CatalogDescriptionProduction.ProductModel .
IF EXISTS (SELECT name FROM sys.indexes
WHERE name = N'IXML_ProductModel_CatalogDescription_Path')
DROP INDEX IXML_ProductModel_CatalogDescription_Path
ON Production.ProductModel;
GO
CREATE XML INDEX IXML_ProductModel_CatalogDescription_Path
ON Production.ProductModel (CatalogDescription)
USING XML INDEX PXML_ProductModel_CatalogDescription FOR PATH ;
GO
D. Másodlagos XML index létrehozása XML tömörítéssel
A következővonatkozik: SQL Server 2022 (16.x) és újabb verziók, Azure SQL Database és felügyelt Azure SQL-példány.
A következő példa másodlagos XML indexet hoz létre a táblázat oszlopán CatalogDescriptionProduction.ProductModel .
IF EXISTS (SELECT name FROM sys.indexes
WHERE name = N'IXML_ProductModel_CatalogDescription_Path')
DROP INDEX IXML_ProductModel_CatalogDescription_Path
ON Production.ProductModel;
GO
CREATE XML INDEX IXML_ProductModel_CatalogDescription_Path
ON Production.ProductModel (CatalogDescription)
USING XML INDEX PXML_ProductModel_CatalogDescription FOR PATH
WITH (XML_COMPRESSION = ON);
GO
Lásd még
- ALTER INDEX (Transact-SQL)
- INDEX KÉSZÍTÉSE (Transact-SQL)
- CREATE PARTITION FÜGGVÉNY (Transact-SQL)
- CREATE PARTITION SCHEME (Transact-SQL)
- TÉRBELI INDEX LÉTREHOZÁSA (Transact-SQL)
- Statok létrehozása (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- adattípusok (Transact-SQL)
- DBCC SHOW_STATISTICS (Transact-SQL)
- DROP INDEX (Transact-SQL)
- XML-indexek (SQL Server)
- sys.indexes (Transact-SQL)
- sys.index_columns (Transact-SQL)
- sys.xml_indexes (Transact-SQL)
- ESEMÉNYADATOK (Transact-SQL)
- XML-indexek (SQL Server)