Megosztás a következőn keresztül:


ALTERNATÍV TÁBLÁZAT index_option (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Az ALTER TABLE használatával létrehozott kényszerdefiníció részét képező indexekre alkalmazható beállítások halmazát adja meg.

Az indexbeállítások teljes leírását az INDEX LÉTREHOZÁSA című témakörben talál.

Transact-SQL szintaxis konvenciók

Syntax

{
    PAD_INDEX = { ON | OFF }
  | FILLFACTOR = fillfactor
  | IGNORE_DUP_KEY = { ON | OFF }
  | STATISTICS_NORECOMPUTE = { ON | OFF }
  | ALLOW_ROW_LOCKS = { ON | OFF }
  | ALLOW_PAGE_LOCKS = { ON | OFF }
  | OPTIMIZE_FOR_SEQUENTIAL_KEY = { ON | OFF }
  | SORT_IN_TEMPDB = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE }
      [ ON PARTITIONS ( { <partition_number_expression> | <range> }
      [ , ...n ] ) ]
  | XML_COMPRESSION = { ON | OFF }
      [ ON PARTITIONS ( { <partition_number_expression> | <range> }
      [ , ...n ] ) ]
  | ONLINE = { ON | OFF }
  | RESUMABLE = { ON | OFF }
  | MAX_DURATION = <time> [ MINUTES ]
}

<range> ::=
<partition_number_expression> TO <partition_number_expression>

<single_partition_rebuild__option> ::=
{
    SORT_IN_TEMPDB = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE } }
  | ONLINE = { ON [ ( <low_priority_lock_wait> ) ] | OFF }
}

<low_priority_lock_wait>::=
{
    WAIT_AT_LOW_PRIORITY ( MAX_DURATION = <time> [ MINUTES ] ,
                           ABORT_AFTER_WAIT = { NONE | SELF | BLOCKERS } )
}

Arguments

PAD_INDEX = { ON | KI }

: SQL Server 2008 (10.0.x) és újabb verziók

Az indexek kitöltését adja meg. Az alapértelmezett érték a OFF.

  • ON

    A megadott FILLFACTOR szabad terület százalékos aránya az index közbenső szintű lapjaira lesz alkalmazva.

  • Ki vagy fillfactor nincs megadva

    A köztes szintű lapok kapacitása megközelíti a kapacitást, így az index által megengedett legnagyobb méretnek legalább egy sora elegendő helyet hagy a köztes oldalakon található kulcsok készlete miatt.

FILLFACTOR = fillfactor

: SQL Server 2008 (10.0.x) és újabb verziók

Ez a százalék azt jelzi, hogy az adatbázismotor mennyire legyen teljes az egyes indexlapok levélszintjének az index létrehozása vagy módosítása során. A megadott értéknek 1 és 100 közötti egész számnak kell lennie. Az alapértelmezett érték 0.

Note

A 0 és a 100 kitöltési tényező értéke minden szempontból azonos.

IGNORE_DUP_KEY = { ON | KI }

Megadja a válasz típusát, amikor egy beszúrási művelet ismétlődő kulcsértékeket próbál beszúrni egy egyedi indexbe. A IGNORE_DUP_KEY beállítás csak az index létrehozása vagy újraépítése után történő beszúrási műveletekre vonatkozik. A beállításnak nincs hatása CREATE INDEX, ALTER INDEXvagy UPDATEvégrehajtásakor. Az alapértelmezett érték a OFF.

  • ON

    Figyelmeztető üzenet jelenik meg, ha ismétlődő kulcsértékeket szúr be egy egyedi indexbe. Csak az egyediség-korlátozást megsértő sorok meghiúsulnak.

  • OFF

    Hibaüzenet jelenik meg, ha ismétlődő kulcsértékeket szúr be egy egyedi indexbe. A teljes INSERT művelet vissza lesz állítva.

IGNORE_DUP_KEY A nézeten, a nemunikus indexeken, az XML-indexeken, a térbeli indexeken és a szűrt indexeken létrehozott indexek nem állíthatók be ON .

A IGNORE_DUP_KEYmegtekintéséhez használja sys.indexes.

A visszamenőlegesen kompatibilis szintaxisban a WITH IGNORE_DUP_KEY egyenértékű a WITH IGNORE_DUP_KEY = ON.

STATISTICS_NORECOMPUTE = { ON | KI }

Tiltsa le vagy engedélyezze az automatikus statisztikafrissítési beállítást AUTO_STATISTICS_UPDATEa megadott indexekhez kapcsolódó statisztikák esetében. Az alapértelmezett érték a OFF.

  • ON

    Az index újraépítése után az automatikus statisztikai frissítések le lesznek tiltva.

  • OFF

    Az index újraépítése után az automatikus statisztikai frissítések engedélyezve lesznek.

Az automatikus statisztikák frissítésének visszaállításához állítsa a STATISTICS_NORECOMPUTEOFF, vagy hajtsa végre a UPDATE STATISTICS a NORECOMPUTE záradék nélkül.

Warning

Ha letiltja a statisztikák automatikus frissítését, az megakadályozhatja, hogy a Lekérdezésoptimalizáló optimális végrehajtási terveket válasszon a táblát tartalmazó lekérdezésekhez. Ezt a lehetőséget takarékosan, csak egy minősített adatbázis-rendszergazda használhatja.

Ez a beállítás nem akadályozza meg az indexhez kapcsolódó statisztikák teljes körű automatikus frissítését az újraépítési művelet során.

ALLOW_ROW_LOCKS = { ON | KI }

: SQL Server 2008 (10.0.x) és újabb verziók

Megadja, hogy engedélyezettek-e a sorzárolások. Az alapértelmezett érték be van kapcsolva.

  • ON

    Az index elérésekor sorzárolások engedélyezettek. Az adatbázismotor határozza meg a sorzárolások használatát.

  • OFF

    A sorzárak nem használhatók.

ALLOW_PAGE_LOCKS = { ON | KI }

: SQL Server 2008 (10.0.x) és újabb verziók

Megadja, hogy engedélyezettek-e az oldalzárolások. Az alapértelmezett érték be van kapcsolva.

  • 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.

  • OFF

    Az oldalzárakat nem használja a rendszer.

OPTIMIZE_FOR_SEQUENTIAL_KEY = { ON | KI }

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók

Megadja, hogy az utolsó oldal beszúrására optimalizálja-e a versengést. Az alapértelmezett érték a OFF. További információt a cikk Szekvenciális kulcsok szakaszában CREATE INDEX talál.

SORT_IN_TEMPDB = { ON | KI }

: SQL Server 2008 (10.0.x) és újabb verziók

Megadja, hogy a rendezési eredményeket a következő helyen tárolja-e tempdb: . Az alapértelmezett érték a OFF.

  • ON

    Az index létrehozásához használt köztes rendezési eredményeket a rendszer tempdbtárolja. Ez csökkentheti az index létrehozásához szükséges időt, ha tempdb a felhasználói adatbázistól eltérő lemezen található. Ez azonban növeli az index buildelése során használt lemezterületet.

  • OFF

    A köztes rendezési eredmények ugyanabban az adatbázisban vannak tárolva, mint az index.

ONLINE = { ON | KI }

: SQL Server 2008 (10.0.x) és újabb verziók

Megadja, hogy a mögöttes táblák és a kapcsolódó indexek elérhetők-e a lekérdezésekhez és az adatok módosításához az indexművelet során. Az alapértelmezett érték a OFF. REBUILD műveletként ONLINE is végrehajtható.

Note

Az egyedi nemclustered indexek nem hozhatók létre online. Ide tartoznak az indexek, amelyek egy UNIQUE vagy PRIMARY KEY több korlátozás miatt jönnek létre.

  • ON

    A hosszú távú táblazárolások nem lesznek megtartva az indexművelet során. Az indexművelet fő fázisában csak szándékmegosztási (IS) zárolás van tárolva a forrástáblán. Ez lehetővé teszi a mögöttes tábla és indexek lekérdezéseinek vagy frissítéseinek folytatását. A művelet kezdetén egy megosztott (S) zárolás van tárolva a forrásobjektumon egy rövid ideig. A művelet végén a rendszer rövid ideig egy S (megosztott) zárolást szerez be a forráson, ha nemclustered index jön létre; vagy Sch-M (sémamódosítás) zárolást kap, amikor egy fürtözött indexet hoz létre vagy elvet online, és amikor egy fürtözött vagy nemclustered indexet újjáépít. Bár az online indexzárak rövid metaadat-zárolások, különösen a Sch-M zárolásnak meg kell várnia, amíg az összes blokkoló tranzakció befejeződik ezen a táblán. A várakozási idő alatt a Sch-M zárolás blokkolja a zárolás mögött várakozó összes többi tranzakciót, amikor ugyanahhoz a táblához fér hozzá. ONLINE nem állítható be ON, ha indexet hoz létre egy helyi ideiglenes táblában.

    Note

    Az online index újraépítése a szakasz későbbi részében ismertetett low_priority_lock_wait beállításokat is megadhatja. low_priority_lock_wait kezeli az S és Sch-M zárolási prioritást az online index újraépítése során.

  • OFF

    Az indexművelet során táblazárolások lesznek alkalmazva. Ez megakadályozza, hogy a művelet során minden felhasználó hozzáférjen az alapul szolgáló táblához. Egy offline indexművelet, amely fürtözött indexet hoz létre, újjáépít vagy elvet, vagy újraépít vagy elvet egy nemclustered indexet, sémamódosítási (Sch-M) zárolást szerez be a táblán. Ez megakadályozza, hogy a művelet során minden felhasználó hozzáférjen az alapul szolgáló táblához. Egy offline indexművelet, amely nemclustered indexet hoz létre, egy megosztott (S) zárolást szerez be a táblán. Ez megakadályozza a mögöttes tábla frissítéseit, de olvasási műveleteket, például SELECT utasításokat tesz lehetővé.

További információ: Online indexműveletek működése.

Note

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.

RESUMABLE = { ON | KI}

A következővonatkozik: SQL Server 2022 (16.x) és újabb verziók

Megadja, hogy egy ALTER TABLE ADD CONSTRAINT művelet folytatható-e. Ha ON, a táblamegkötés hozzáadása művelet ismét végrehajtható. A táblamegkötési művelet hozzáadása nem folytatható OFF. Az alapértelmezett érték OFF. Ha a RESUMABLE beállítás értéke be van állítva ON, a beállítás ONLINE = ON megadása kötelező.

MAX_DURATIONha a (kötelezőRESUMABLE = ON) funkcióval ONLINE = ON használja, az időt (a percekben megadott egész számértéket) jelzi, hogy a szüneteltetés előtt végrehajt egy újra használható online hozzáadási kényszerműveletet. Ha nincs megadva, a művelet a befejezésig folytatódik. MAXDOP is támogatott RESUMABLE = ON .

Az újra felhasználható ALTER TABLE ADD CONSTRAINT műveletek engedélyezésével és használatával kapcsolatos további információkért lásd: Újraművelhető táblamegkötések hozzáadása.

MAXDOP = max_degree_of_parallelism

: SQL Server 2008 (10.0.x) és újabb verziók

Felülbírálja a párhuzamossági konfiguráció maximális mértékét az indexművelet során. További információ: A párhuzamosság maximális fokának konfigurálása (kiszolgálókonfigurációs beállítás). A párhuzamos terv végrehajtásához használt processzorok számának korlátozására használható MAXDOP . A maximális érték 64 processzor.

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 korlátozza.
  • 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.

Note

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.

DATA_COMPRESSION

: SQL Server 2008 (10.0.x) és újabb verziók

Megadja a megadott tábla, partíciószám vagy partíciótartomány adattömörítési beállítását. A lehetőségek a következők:

  • NONE

    A tábla vagy a megadott partíciók nincsenek tömörítve. Csak a sortártáblákra vonatkozik; oszlopcentrikus táblákra nem vonatkozik.

  • ROW

    A táblázat vagy a megadott partíciók sortömörítéssel vannak tömörítve. Csak a sortártáblákra vonatkozik; oszlopcentrikus táblákra nem vonatkozik.

  • PAGE

    A táblázat vagy a megadott partíciók laptömörítéssel vannak tömörítve. Csak a sortártáblákra vonatkozik; oszlopcentrikus táblákra nem vonatkozik.

  • COLUMNSTORE

    A következőkre vonatkozik: SQL Server 2014 (12.x) és újabb verziók

    Csak oszlopcentrikus táblákra vonatkozik. COLUMNSTORE a beállítással tömörített partíció felbontását COLUMNSTORE_ARCHIVE adja meg. Az adatok visszaállításakor az COLUMNSTORE index továbbra is tömörítve lesz az összes oszlopcentrikus táblához használt oszlopcentrikus tömörítéssel.

  • COLUMNSTORE_ARCHIVE

    A következőkre vonatkozik: SQL Server 2014 (12.x) és újabb verziók

    Csak az oszlopcentrikus táblákra vonatkozik, amelyek fürtözött oszlopcentrikus indexben tárolt táblák. COLUMNSTORE_ARCHIVE a megadott partíciót kisebb méretűre tömöríti. Ez felhasználható archiválásra vagy más olyan helyzetekre, amelyek kevesebb tárhelyet igényelnek, és több időt engedhetnek meg a tárolásra és a lekérésre

További információ a tömörítésről: Adattömörítési.

XML_COMPRESSION

A következővonatkozik: SQL Server 2022 (16.x) és újabb verziók, Azure SQL Database és felügyelt Azure SQL-példány.

Megadja a táblázat bármely XML- adattípus-oszlopának XML-tömörítési beállítását. A lehetőségek a következők:

  • ON

    A xml adattípust használó oszlopok tömörítve vannak.

  • OFF

    Az xml adattípust használó oszlopok nem tömöríthetők.

PARTÍCIÓKON ( { <partition_number_expression> | <tartomány> } [ ,...n ] )

: SQL Server 2008 (10.0.x) és újabb verziók

Meghatározza azokat a partíciókat, amelyekre a DATA_COMPRESSION vagy XML_COMPRESSION beállítások vonatkoznak. Ha a tábla nincs particionálva, a ON PARTITIONS argumentum hibát okoz. Ha a ON PARTITIONS záradék nincs megadva, az vagy DATA_COMPRESSION a XML_COMPRESSION beállítás a particionált tábla összes partíciójára vonatkozik.

<partition_number_expression> a következő módokon adhatók meg:

  • Adja meg a partíció számát, például: ON PARTITIONS (2).
  • Adja meg a partíciószámokat több, vesszővel elválasztott partícióhoz, például: ON PARTITIONS (1, 5).
  • Adja meg a tartományokat és az egyes partíciókat, például: ON PARTITIONS (2, 4, 6 TO 8).

<range> megadható a TO szóval elválasztott partíciószámokként, például: ON PARTITIONS (6 TO 8).

Ha különböző típusú adattömörítést szeretne beállítani a különböző partíciókhoz, adja meg többször a DATA_COMPRESSION beállítást, például:

--For rowstore tables
REBUILD WITH
(
  DATA_COMPRESSION = NONE ON PARTITIONS (1),
  DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8),
  DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)
)

--For columnstore tables
REBUILD WITH
(
  DATA_COMPRESSION = COLUMNSTORE ON PARTITIONS (1, 3, 5),
  DATA_COMPRESSION = COLUMNSTORE_ARCHIVE ON PARTITIONS (2, 4, 6 TO 8)
)

<single_partition_rebuild__option>

Az indexek újraépítése a legtöbb esetben a particionált indexek összes partícióját is újraépíti. Az alábbi beállítások egyetlen partícióra alkalmazva nem építik újra az összes partíciót.

  • SORT_IN_TEMPDB
  • MAXDOP
  • DATA_COMPRESSION
  • XML_COMPRESSION

low_priority_lock_wait

A következőkre vonatkozik: SQL Server 2014 (12.x) és újabb verziók

Egy SWITCH vagy online index újraépítése azonnal befejeződik, amint nincs blokkoló művelet a táblához. WAIT_AT_LOW_PRIORITY azt jelzi, hogy ha az SWITCH online index újraépítési művelete nem hajtható végre azonnal, akkor az várni fog. A művelet alacsony prioritású zárolásokat tartalmaz, így a DDL utasítással ütköző zárolásokat tartalmazó egyéb műveletek is folytathatók. A WAIT AT LOW PRIORITY lehetőség kihagyása egyenértékű a WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE).

MAX_DURATION = idő [ PERC ]

Az a várakozási idő (percekben megadott egész szám), amelyet a SWITCH beolvasandó vagy az online index újraépítése zárol, a DDL-parancs végrehajtásakor várakozik. Az SWITCH online index újraépítési művelete azonnal befejeződik. Ha a művelet egyelőre MAX_DURATION le van tiltva, az ABORT_AFTER_WAIT egyik művelet végrehajtásra kerül. MAX_DURATION idő mindig percekben van, és a MINUTES szó kihagyható.

ABORT_AFTER_WAIT = { NONE | SELF | BLOKKOLÓK }

  • NONE

    A zárolási prioritás módosítása nélkül (normál prioritás használatával) folytatja az SWITCH online index újraépítési műveletet.

  • SELF

    Az aktuálisan végrehajtott DDL-művelet végrehajtása nélkül kilép az SWITCH online index újraépítési vagy újraépítési műveletből.

  • BLOCKERS

    A DDL-műveletet jelenleg SWITCH letiltó vagy online index-újraépítési DDL-műveletet letiltó összes felhasználói tranzakciót leállít, hogy a művelet folytatható legyen.

    BLOCKERS engedélyre ALTER ANY CONNECTION van szükség.