gebeurtenis
31 mrt, 23 - 2 apr, 23
De grootste SQL-, Fabric- en Power BI-leerevenement. 31 maart – 2 april. Gebruik code FABINSIDER om $ 400 te besparen.
Zorg dat u zich vandaag nog registreertDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-database in Microsoft Fabric
Wijzigt een bestaande tabel of weergave-index (rowstore, columnstore of XML) door de index uit te schakelen, opnieuw te bouwen of opnieuw te ordenen; of door opties voor de index in te stellen.
Transact-SQL syntaxisconventies
Syntaxis voor SQL Server, Azure SQL Database en Azure SQL Managed Instance.
ALTER INDEX { index_name | ALL } ON <object>
{
REBUILD {
[ PARTITION = ALL [ WITH ( <rebuild_index_option> [ , ...n ] ) ] ]
| [ PARTITION = partition_number [ WITH ( <single_partition_rebuild_index_option> [ , ...n ] ) ] ]
}
| DISABLE
| REORGANIZE [ PARTITION = partition_number ] [ WITH ( <reorganize_option> ) ]
| SET ( <set_index_option> [ , ...n ] )
| RESUME [ WITH (<resumable_index_option> [ , ...n ] ) ]
| PAUSE
| ABORT
}
[ ; ]
<object> ::=
{
{ database_name.schema_name.table_or_view_name | schema_name.table_or_view_name | table_or_view_name }
}
<rebuild_index_option> ::=
{
PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = { ON | OFF }
| IGNORE_DUP_KEY = { ON | OFF }
| STATISTICS_NORECOMPUTE = { ON | OFF }
| STATISTICS_INCREMENTAL = { ON | OFF }
| ONLINE = { ON [ ( <low_priority_lock_wait> ) ] | OFF }
| RESUMABLE = { ON | OFF }
| MAX_DURATION = <time> [ MINUTES ]
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
| DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE }
[ ON PARTITIONS ( { <partition_number> [ TO <partition_number> ] } [ , ...n ] ) ]
| XML_COMPRESSION = { ON | OFF }
[ ON PARTITIONS ( { <partition_number> [ TO <partition_number> ] } [ , ...n ] ) ] }
<single_partition_rebuild_index_option> ::=
{
SORT_IN_TEMPDB = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
| RESUMABLE = { ON | OFF }
| MAX_DURATION = <time> [ MINUTES ]
| DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE }
| XML_COMPRESSION = { ON | OFF }
| ONLINE = { ON [ ( <low_priority_lock_wait> ) ] | OFF }
}
<reorganize_option> ::=
{
LOB_COMPACTION = { ON | OFF }
| COMPRESS_ALL_ROW_GROUPS = { ON | OFF }
}
<set_index_option> ::=
{
ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| OPTIMIZE_FOR_SEQUENTIAL_KEY = { ON | OFF }
| IGNORE_DUP_KEY = { ON | OFF }
| STATISTICS_NORECOMPUTE = { ON | OFF }
| COMPRESSION_DELAY = { 0 | delay [ Minutes ] }
}
<resumable_index_option> ::=
{
MAXDOP = max_degree_of_parallelism
| MAX_DURATION = <time> [ MINUTES ]
| <low_priority_lock_wait>
}
<low_priority_lock_wait> ::=
{
WAIT_AT_LOW_PRIORITY ( MAX_DURATION = <time> [ MINUTES ] ,
ABORT_AFTER_WAIT = { NONE | SELF | BLOCKERS } )
}
Syntaxis voor Azure Synapse Analytics en Analytics Platform System (PDW).
ALTER INDEX { index_name | ALL }
ON [ schema_name. ] table_name
{
REBUILD {
[ PARTITION = ALL [ WITH ( <rebuild_index_option> ) ] ]
| [ PARTITION = partition_number [ WITH ( <single_partition_rebuild_index_option> ) ] ]
}
| DISABLE
| REORGANIZE [ PARTITION = partition_number ]
}
[ ; ]
<rebuild_index_option> ::=
{
DATA_COMPRESSION = { COLUMNSTORE | COLUMNSTORE_ARCHIVE }
[ ON PARTITIONS ( { <partition_number> [ TO <partition_number> ] } [ , ...n ] ) ]
| XML_COMPRESSION = { ON | OFF }
[ ON PARTITIONS ( { <partition_number> [ TO <partition_number> ] } [ , ...n ] ) ]
}
<single_partition_rebuild_index_option> ::=
{
DATA_COMPRESSION = { COLUMNSTORE | COLUMNSTORE_ARCHIVE }
| XML_COMPRESSION = { ON | OFF }
}
De naam van de index. Indexnamen moeten uniek zijn binnen een tabel of weergave, maar hoeven niet uniek te zijn binnen een database. Indexnamen moeten voldoen aan de regels van id's.
Hiermee geeft u alle indexen op die zijn gekoppeld aan de tabel of weergave, ongeacht het indextype. Als u ALL
opgeeft, mislukt de instructie als een of meer indexen zich in een offline- of alleen-lezen bestandsgroep bevinden of de opgegeven bewerking niet is toegestaan voor een of meer indextypen. De volgende tabel bevat de indexbewerkingen en niet-toegestane indextypen.
Het trefwoord ALL gebruiken met deze bewerking |
Mislukt als de tabel een of meer bevat |
---|---|
REBUILD WITH ONLINE = ON |
XML-index Ruimtelijke index Columnstore-index in SQL Server 2017 (14.x) en oudere versies. Latere versies ondersteunen online herbouwen van columnstore-indexen. |
REBUILD PARTITION = <partition_number> |
Niet-gepartitioneerde index, XML-index, ruimtelijke index of uitgeschakelde index |
REORGANIZE |
Indexen met ALLOW_PAGE_LOCKS ingesteld op OFF |
REORGANIZE PARTITION = <partition_number> |
Niet-gepartitioneerde index, XML-index, ruimtelijke index of uitgeschakelde index |
IGNORE_DUP_KEY = ON |
XML-index Ruimtelijke index Columnstore-index 1 |
ONLINE = ON |
XML-index Ruimtelijke index Columnstore-index 1 |
RESUMABLE = ON |
Hervatbare indexen worden niet ondersteund met het trefwoord ALL |
Als ALL
is opgegeven met PARTITION = <partition_number>
, moeten alle indexen worden uitgelijnd. Dit betekent dat ze worden gepartitioneerd op basis van gelijkwaardige partitiefuncties. Als u ALL
met PARTITION
gebruikt, worden alle indexpartities met dezelfde <partition_number>
opnieuw opgebouwd of geordend. Zie Gepartitioneerde tabellen en indexenvoor meer informatie over gepartitioneerde indexen.
Zie Richtlijnen voor online indexbewerkingenvoor meer informatie over online indexbewerkingen.
De naam van de database.
De naam van het schema waartoe de tabel of weergave behoort.
De naam van de tabel of weergave die aan de index is gekoppeld. Als u indexdetails voor een tabel of weergave wilt weergeven, gebruikt u de sys.indexes catalogusweergave.
Azure SQL Database ondersteunt de driedelige naamindeling <database_name>.<schema_name>.<object_name>
wanneer <database_name>
de naam van de huidige database is of <database_name>
tempdb
is en <object_name>
begint met #
of ##
. Als de schemanaam dbo
is, kan <schema_name>
worden weggelaten.
van toepassing op: SQL Server 2012 (11.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Hiermee geeft u op dat de index opnieuw wordt opgebouwd met behulp van dezelfde kolommen, indextype, kenmerk uniekheid en sorteervolgorde.
REBUILD
schakelt een uitgeschakelde index in. Als u een geclusterde index opnieuw opbouwt, worden gekoppelde niet-geclusterde indexen niet opnieuw opgebouwd, tenzij het trefwoord ALL
is opgegeven. Als er geen indexopties zijn opgegeven, worden de bestaande indexoptiewaarden in sys.indexes toegepast. Voor een indexoptie waarvan de waarde niet wordt weergegeven in sys.indexes
, is de standaardwaarde die wordt aangegeven in de argumentdefinitie van de optie van toepassing.
Als ALL
is opgegeven en de onderliggende tabel een heap is, heeft de herbouwbewerking geen effect op de heap. Alle niet-geclusterde indexen die aan de tabel zijn gekoppeld, worden opnieuw opgebouwd.
De REBUILD
bewerking kan minimaal worden vastgelegd als het databaseherstelmodel bulksgewijs is geregistreerd of eenvoudig is.
Wanneer u een primaire XML-index opnieuw opbouwt, is de onderliggende gebruikerstabel niet beschikbaar voor de duur van de indexbewerking.
Voor columnstore-indexen wordt de herbouwbewerking uitgevoerd:
CREATE [CLUSTERED] COLUMNSTORE INDEX ... ORDER (...) ... WITH (DROP_EXISTING = ON)
-instructie.Zie Indexonderhoud optimaliseren om de queryprestaties te verbeteren en het resourceverbruik te verminderenvoor meer informatie.
Hiermee geeft u op dat slechts één partitie van een index opnieuw wordt opgebouwd of opnieuw wordt georganiseerd.
PARTITION
kan niet worden opgegeven als index_name geen gepartitioneerde index is.
PARTITION = ALL
alle partities opnieuw opbouwt.
Waarschuwing
Het maken en herbouwen van niet-uitgelijnde indexen in een tabel met meer dan 1000 partities is mogelijk, maar wordt niet ondersteund. Dit kan leiden tot verminderde prestaties of overmatig geheugenverbruik tijdens deze bewerkingen. Microsoft raadt aan alleen uitgelijnde indexen te gebruiken wanneer het aantal partities groter is dan 1000.
partition_number
Het partitienummer van een gepartitioneerde index die opnieuw moet worden opgebouwd of opnieuw moet worden georganiseerd. partition_number is een constante expressie die naar variabelen kan verwijzen. Deze omvatten door de gebruiker gedefinieerde typevariabelen of -functies en door de gebruiker gedefinieerde functies, maar kunnen niet verwijzen naar een Transact-SQL-instructie. partition_number moet bestaan of de instructie mislukt.
WITH (<single_partition_rebuild_index_option>)
SORT_IN_TEMPDB
, MAXDOP
, DATA_COMPRESSION
en XML_COMPRESSION
zijn de opties die kunnen worden opgegeven wanneer u één partitie opnieuw bouwt met behulp van de (PARTITION = partition_number)
syntaxis. XML-indexen kunnen niet worden opgegeven in één herbouwbewerking voor partities.
Hiermee wordt de index gemarkeerd als uitgeschakeld en niet beschikbaar voor gebruik door de database-engine. Elke index kan worden uitgeschakeld. De indexdefinitie van een uitgeschakelde index blijft aanwezig in de systeemcatalogus zonder onderliggende indexgegevens. Als u een geclusterde index uitschakelt, voorkomt u dat gebruikers toegang hebben tot de onderliggende tabelgegevens. Als u een index wilt inschakelen, gebruikt u ALTER INDEX REBUILD
of CREATE INDEX WITH DROP_EXISTING
. Zie Indexen en beperkingen uitschakelen en Indexen en beperkingen inschakelenvoor meer informatie.
Voor rijstore-indexen geeft REORGANIZE
aan dat het niveau van het indexblad moet worden gereorganiseert. De REORGANIZE
bewerking is:
ALTER INDEX REORGANIZE
transactie.ALLOW_PAGE_LOCKS
is ingesteld op OFF
.Notitie
Wanneer ALTER INDEX REORGANIZE
expliciete transacties gebruikt (bijvoorbeeld ALTER INDEX
binnen een BEGIN TRAN ... COMMIT/ROLLBACK
) in plaats van de standaard impliciete transactiemodus, wordt het vergrendelingsgedrag van REORGANIZE
restrictiever, waardoor blokkeren mogelijk wordt veroorzaakt. Zie SET IMPLICIT_TRANSACTIONSvoor meer informatie over impliciete transacties.
Zie Indexonderhoud optimaliseren om de queryprestaties te verbeteren en het resourceverbruik te verminderenvoor meer informatie.
Van toepassing op rijstore-indexen.
OP
REORGANIZE ALL
voert LOB-compressie uit op alle indexen. Voor elke index worden alle LOB-kolommen in de geclusterde index, onderliggende tabel of opgenomen kolommen in een niet-geclusterde index gecomprimeerd.AF
Voor columnstore-indexen comprimeert REORGANIZE
elke gesloten deltarijgroep in de columnstore als een gecomprimeerde rijgroep. De REORGANIZE
bewerking wordt altijd online uitgevoerd. Dit betekent dat tabelvergrendelingen op lange termijn niet worden bewaard en dat query's of updates van de onderliggende tabel tijdens de ALTER INDEX REORGANIZE
transactie kunnen worden voortgezet.
Zie Indexonderhoud optimaliseren om de queryprestaties te verbeteren en het resourceverbruik te verminderenvoor meer informatie.
REORGANIZE
is niet vereist om de gesloten deltarijgroepen te verplaatsen naar gecomprimeerde rijgroepen. Het tm-proces (background tuple-mover) wordt periodiek geactiveerd om de gesloten deltarijgroepen te comprimeren. U wordt aangeraden REORGANIZE
te gebruiken wanneer tuple-mover achterloopt.
REORGANIZE
kan rijgroepen agressief comprimeren.Voor columnstore-indexen in SQL Server 2016 (13.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance voert REORGANIZE
de volgende extra defragmentatieoptimalisaties online uit:
Verwijdert fysiek verwijderde rijen uit een rijgroep wanneer 10% of meer van de rijen logisch zijn verwijderd. De verwijderde bytes worden teruggevorderd op de fysieke media. Als een gecomprimeerde rijgroep van 1 miljoen rijen bijvoorbeeld 100.000 rijen heeft verwijderd, verwijdert de database-engine de verwijderde rijen en comprimeert de rijgroep met 900.000 rijen.
Combineert een of meer gecomprimeerde rijgroepen om rijen per rijgroep te verhogen tot maximaal 1.048.576 rijen. Als u bijvoorbeeld 5 batches van 102.400 rijen bulksgewijs importeert, krijgt u vijf gecomprimeerde rijgroepen. Als u REORGANIZE
uitvoert, worden deze rijgroepen samengevoegd in 1 gecomprimeerde rijgroep met 512.000 rijen. Hierbij wordt ervan uitgegaan dat er geen limieten voor woordenlijstgrootte of geheugen zijn.
Voor rijgroepen waarin 10% of meer rijen logisch zijn verwijderd, probeert de database-engine deze rijgroep te combineren met een of meer rijengroepen. Rijgroep 1 wordt bijvoorbeeld gecomprimeerd met 500.000 rijen en rijgroep 21 wordt gecomprimeerd met het maximum van 1.048.576 rijen. Rijgroep 21 heeft 60% van de rijen die 409.830 rijen verlaten. De database-engine biedt de voorkeur aan het combineren van deze twee rijgroepen om een nieuwe rijgroep met 909.830 rijen te comprimeren.
Van toepassing op columnstore-indexen.
van toepassing op: SQL Server 2016 (13.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
COMPRESS_ALL_ROW_GROUPS
biedt een manier om open of gesloten deltarijgroepen af te dwingen in de columnstore. Met deze optie is het niet nodig om de columnstore-index opnieuw te bouwen om de deltarijgroepen leeg te maken. In combinatie met de andere functies voor het verwijderen en samenvoegen van de fragmentatie, is het niet langer nodig om in de meeste situaties een columnstore-index opnieuw te bouwen.
OP
Dwingt alle rijgroepen in de columnstore, ongeacht de grootte en status (gesloten of geopend).
AF
Hiermee worden alle gesloten rijgroepen in de columnstore gedrijpt.
Zie Indexonderhoud optimaliseren om de queryprestaties te verbeteren en het resourceverbruik te verminderenvoor meer informatie.
Hiermee wijzigt u de indexopties zonder de index opnieuw te bouwen of opnieuw te ordenen.
SET
kan niet worden opgegeven voor een uitgeschakelde index.
Hiermee geeft u indexopvulling. De standaardwaarde is OFF
.
OP
Het percentage vrije ruimte dat is opgegeven door vulfactor, wordt toegepast op de pagina's op tussenliggend niveau van de index. Als FILLFACTOR
niet tegelijkertijd is opgegeven PAD_INDEX
is ingesteld op ON
, wordt de waarde van de vulfactor in sys.indexes gebruikt.
AF
De pagina's op tussenliggend niveau zijn gevuld met bijna-capaciteit, waardoor er voldoende ruimte is voor ten minste één rij met de maximale grootte van de index, rekening houdend met de set sleutels op de tussenliggende pagina's. Dit treedt ook op als PAD_INDEX
is ingesteld op ON
, maar de vulfactor niet is opgegeven.
Zie CREATE INDEXvoor meer informatie.
Hiermee geeft u een percentage op dat aangeeft hoe vol de database-engine het bladniveau van elke indexpagina moet maken tijdens het maken of wijzigen van de index. De waarde voor fillfactor moet een geheel getal tussen 1 en 100 zijn. De standaardwaarde is 0. Vulfactorwaarden 0 en 100 zijn in alle opzichten hetzelfde.
Een expliciete instelling FILLFACTOR
is alleen van toepassing wanneer de index voor het eerst wordt gemaakt of opnieuw wordt opgebouwd. De database-engine behoudt niet dynamisch het opgegeven percentage lege ruimte op de pagina's. Zie CREATE INDEXvoor meer informatie.
Gebruik fill_factor
in sys.indexes
om de instelling van de vulfactor weer te geven.
Belangrijk
Als u een index maakt met een FILLFACTOR
kleiner dan 100, neemt de hoeveelheid opslagruimte die de gegevens in beslag nemen toe, omdat de database-engine de gegevens herdistribueert volgens de vulfactor bij het maken of herbouwen van een index.
Hiermee geeft u op of tijdelijke sorteerresultaten moeten worden opgeslagen in tempdb
. De standaardwaarde is OFF
, met uitzondering van Azure SQL Database Hyperscale. Voor alle indexbuildbewerkingen in Hyperscale wordt SORT_IN_TEMPDB
altijd ON
tenzij een hervatbare indexbuild wordt gebruikt. Voor hervatbare index builds wordt SORT_IN_TEMPDB
altijd OFF
.
OP
De tussenliggende sorteerresultaten die worden gebruikt om de index te bouwen, worden opgeslagen in tempdb
. Dit kan de tijd verkorten die nodig is om een index te maken. Dit verhoogt echter de hoeveelheid schijfruimte die wordt gebruikt tijdens de indexbuild.
AF
De tussenliggende sorteerresultaten worden opgeslagen in dezelfde database als de index.
Als een sorteerbewerking niet vereist is of als de sortering in het geheugen kan worden uitgevoerd, wordt de optie SORT_IN_TEMPDB
genegeerd.
Zie SORT_IN_TEMPDB optie voor indexenvoor meer informatie.
Hiermee geeft u het foutbericht op wanneer een invoegbewerking probeert dubbele sleutelwaarden in een unieke index in te voegen. De optie IGNORE_DUP_KEY
is alleen van toepassing op het invoegen van bewerkingen nadat de index is gemaakt of opnieuw is opgebouwd. De standaardwaarde is OFF
.
OP
Er treedt een waarschuwingsbericht op wanneer dubbele sleutelwaarden worden ingevoegd in een unieke index. Alleen de rijen die de uniekheidsbeperking schenden, worden niet ingevoegd.
AF
Er treedt een foutbericht op wanneer dubbele sleutelwaarden worden ingevoegd in een unieke index. De hele INSERT
bewerking wordt teruggedraaid.
IGNORE_DUP_KEY
kan niet worden ingesteld op ON
voor indexen die zijn gemaakt in een weergave, niet-unieke indexen, XML-indexen, ruimtelijke indexen en gefilterde indexen.
Als u de IGNORE_DUP_KEY
-instelling voor een index wilt weergeven, gebruikt u de kolom ignore_dup_key
in de sys.indexes catalogusweergave.
In achterwaarts compatibele syntaxis is WITH IGNORE_DUP_KEY
gelijk aan WITH IGNORE_DUP_KEY = ON
.
Schakel de optie voor het bijwerken van automatische statistieken, AUTO_STATISTICS_UPDATE
, uit of in voor de statistieken in de index. De standaardwaarde is OFF
.
OP
Automatische updates voor statistieken worden uitgeschakeld nadat de index opnieuw is opgebouwd.
AF
Automatische updates voor statistieken worden ingeschakeld nadat de index opnieuw is opgebouwd.
Als u het automatisch bijwerken van statistieken wilt herstellen, stelt u de STATISTICS_NORECOMPUTE
in op OFF
of voert u UPDATE STATISTICS
uit zonder de NORECOMPUTE
component.
Waarschuwing
Als u automatische hercomputatie van statistieken uitschakelt door STATISTICS_NORECOMPUTE = ON
in te stellen, kunt u voorkomen dat de queryoptimalisatie optimale uitvoeringsplannen kiest voor query's die betrekking hebben op de tabel.
Als u STATISTICS_NORECOMPUTE
instelt op ON
wordt het bijwerken van indexstatistieken die optreden tijdens de herbouwbewerking van de index niet voorkomen.
van toepassing op: SQL Server 2014 (12.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Wanneer ON
, zijn de statistieken die op de index zijn gemaakt per partitiestatistieken. Wanneer OFF
, worden de bestaande statistieken verwijderd en worden de statistieken opnieuw berekend door de database-engine. De standaardwaarde is OFF
.
Als statistieken per partitie niet worden ondersteund, wordt de optie genegeerd en wordt er een waarschuwing gegenereerd. Incrementele statistieken worden in de volgende gevallen niet ondersteund:
Hiermee geeft u op of onderliggende tabellen en bijbehorende indexen beschikbaar zijn voor query's en gegevenswijziging tijdens de indexbewerking. De standaardwaarde is OFF
.
Voor een XML-index of ruimtelijke index wordt alleen ONLINE = OFF
ondersteund en als ONLINE
is ingesteld op ON
er een fout optreedt.
Belangrijk
Online indexbewerkingen zijn niet beschikbaar in elke editie van Microsoft SQL Server. Zie -edities en ondersteunde functies van SQL Server 2022voor een lijst met functies die worden ondersteund door de edities van SQL Server.
OP
Langetermijntabelvergrendelingen worden niet bewaard voor de duur van de indexbewerking. Tijdens de hoofdfase van de indexbewerking wordt alleen een intentievergrendeling (IS
) op de brontabel bewaard. Hierdoor kunnen query's of updates voor de onderliggende tabel en indexen worden voortgezet. Aan het begin van de bewerking wordt een gedeelde vergrendeling (S
) gedurende een korte periode op het bronobject bewaard. Aan het einde van de bewerking wordt gedurende een korte periode een gedeelde (S
) vergrendeling op het object verkregen als er een niet-geclusterde index wordt gemaakt. Een schemawijzigingsvergrendeling (Sch-M
) wordt verkregen wanneer een geclusterde index online wordt gemaakt of verwijderd en wanneer een geclusterde of niet-geclusterde index opnieuw wordt opgebouwd.
ONLINE
kan niet worden ingesteld op ON
wanneer een index wordt gemaakt in een lokale tijdelijke tabel.
Notitie
U kunt de optie WAIT_AT_LOW_PRIORITY
gebruiken om tijdens online indexbewerkingen blokkeren of blokkeren te voorkomen. Zie WAIT_AT_LOW_PRIORITY met online indexbewerkingenvoor meer informatie.
AF
Tabelvergrendelingen worden toegepast voor de duur van de indexbewerking. Een offline indexbewerking waarmee een geclusterde, ruimtelijke of XML-index wordt gemaakt, herbouwd of verwijderd of een niet-geclusterde index wordt gemaakt, opnieuw wordt opgebouwd of verwijderd, wordt een schemawijziging (Sch-M
) op de tabel verkregen. Hiermee voorkomt u dat alle gebruikers toegang hebben tot de onderliggende tabel voor de duur van de bewerking. Een offline indexbewerking waarmee een niet-geclusterde index wordt gemaakt, wordt in eerste instantie een gedeelde (S
) vergrendeling voor de tabel verkregen. Hiermee voorkomt u dat de onderliggende tabeldefinitie wordt gewijzigd, maar de gegevens in de tabel kunnen worden gelezen en gewijzigd terwijl de indexbuild wordt uitgevoerd.
Zie Indexbewerkingen online uitvoeren en Richtlijnen voor online indexbewerkingenvoor meer informatie.
Indexen, inclusief indexen voor globale tijdelijke tabellen, kunnen online opnieuw worden opgebouwd, met uitzondering van de volgende gevallen:
ONLINE
.Zie Hoe online indexbewerkingen werkenvoor meer informatie.
van toepassing op: SQL Server 2017 (14.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Hiermee geeft u op of een online indexbewerking hervat kan worden.
OP
De indexbewerking kan worden hervat.
AF
De indexbewerking kan niet worden hervat.
van toepassing op: SQL Server 2017 (14.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Hiermee geeft u op hoe lang, in minuten voor gehele getallen, een hervatbare indexbewerking wordt uitgevoerd voordat deze wordt onderbroken.
Hiermee geeft u op of rijvergrendelingen zijn toegestaan. De standaardwaarde is ON
.
OP
Rijvergrendelingen zijn toegestaan bij toegang tot de index. De database-engine bepaalt wanneer rijvergrendelingen worden gebruikt.
AF
Rijvergrendelingen worden niet gebruikt.
Hiermee geeft u op of paginavergrendelingen zijn toegestaan. De standaardwaarde is ON
.
OP
Paginavergrendelingen zijn toegestaan wanneer u toegang hebt tot de index. De database-engine bepaalt wanneer paginavergrendelingen worden gebruikt.
AF
Paginavergrendelingen worden niet gebruikt.
van toepassing op: SQL Server 2019 (15.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Hiermee geeft u op of u wilt optimaliseren om conflicten met laatste pagina's te voorkomen. De standaardwaarde is OFF
. Zie Sequentiële sleutelsvoor meer informatie.
Overschrijft de maximale mate van parallelle uitvoering configuratieoptie voor de indexbewerking. Zie De maximale mate van parallelle configuratie van server configurerenvoor meer informatie. Gebruik MAXDOP
om de mate van parallelle uitvoering en het resulterende resourceverbruik voor een indexbuildbewerking te beperken.
Hoewel de optie MAXDOP
syntactisch wordt ondersteund voor alle XML-indexen en ruimtelijke indexen, gebruikt ALTER INDEX
momenteel slechts één processor.
max_degree_of_parallelism kan het volgende zijn:
1
Onderdrukt het genereren van parallelle plannen.
>1
Hiermee beperkt u de maximale mate van parallelle uitvoering die wordt gebruikt in een parallelle indexbewerking tot het opgegeven getal of minder op basis van de huidige systeemworkload.
0 (standaard)
Maakt gebruik van de mate van parallelle uitvoering die is opgegeven op server-, database- of workloadgroepsniveau, tenzij verminderd op basis van de huidige systeemworkload.
Zie Parallelle indexbewerkingen configurerenvoor meer informatie.
Notitie
Parallelle indexbewerkingen zijn niet beschikbaar in elke editie van SQL Server. Zie -edities en ondersteunde functies van SQL Server 2022voor een lijst met functies die worden ondersteund door de edities van SQL Server.
van toepassing op: SQL Server (te beginnen met SQL Server 2016 (13.x)), Azure SQL Database en Azure SQL Managed Instance
Voor een tabel op basis van een schijf met een columnstore-index geeft u het minimale aantal minuten op dat een deltarijgroep met de gesloten status in het deltaarchief moet blijven staan voordat de Database Engine deze kan comprimeren in een gecomprimeerde rijgroep. Omdat tabellen op basis van schijven geen invoeg- en updatetijden voor afzonderlijke rijen bijhouden, past de database-engine deze vertraging alleen toe op rijgroepen van Delta-opslag in de gesloten status.
De standaardwaarde is 0 minuten.
Zie Aan de slag met columnstore voor realtime operationele analysesvoor aanbevelingen voor het gebruik van COMPRESSION_DELAY
.
Hiermee geeft u de optie voor gegevenscompressie voor de opgegeven index, partitienummer of bereik van partities. De opties zijn als volgt:
GEEN
Indexen of opgegeven partities worden niet gecomprimeerd. Dit geldt niet voor columnstore-indexen.
ROEIEN
Indexen of opgegeven partities worden gecomprimeerd met behulp van rijcompressie. Dit geldt niet voor columnstore-indexen.
BLADZIJDE
Index- of opgegeven partities worden gecomprimeerd met behulp van paginacompressie. Dit geldt niet voor columnstore-indexen.
COLUMNSTORE
van toepassing op: SQL Server 2014 (12.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Is alleen van toepassing op columnstore-indexen, inclusief niet-geclusterde columnstore- en geclusterde columnstore-indexen. Als u COLUMNSTORE
opgeeft, worden alle andere gegevenscompressie, inclusief COLUMNSTORE_ARCHIVE
, verwijderd.
COLUMNSTORE_ARCHIVE
van toepassing op: SQL Server 2014 (12.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Is alleen van toepassing op columnstore-indexen, inclusief niet-geclusterde columnstore- en geclusterde columnstore-indexen.
COLUMNSTORE_ARCHIVE
de opgegeven partitie verder comprimeert naar een kleinere grootte. Dit kan worden gebruikt voor archivering, of voor andere situaties die een kleinere opslagruimte vereisen en meer tijd voor opslag en ophalen kunnen veroorloven.
Zie Gegevenscompressievoor meer informatie over compressie.
van toepassing op: SQL Server 2022 (16.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Hiermee geeft u de XML-compressieoptie voor de opgegeven index die een of meer xml- kolommen van het gegevenstype bevat. De opties zijn als volgt:
OP
Indexen of opgegeven partities worden gecomprimeerd met behulp van XML-compressie.
AF
Indexen of opgegeven partities worden niet gecomprimeerd.
Hiermee geeft u de partities waarop de DATA_COMPRESSION
of XML_COMPRESSION
instellingen van toepassing zijn. Als de index niet is gepartitioneerd, genereert het argument ON PARTITIONS
een fout. Als de ON PARTITIONS
component niet is opgegeven, is de optie DATA_COMPRESSION
of XML_COMPRESSION
van toepassing op alle partities van een gepartitioneerde index.
<partition_number_expression>
kunt u op de volgende manieren opgeven:
ON PARTITIONS (2)
.ON PARTITIONS (1, 5)
.ON PARTITIONS (2, 4, 6 TO 8)
.
<range>
kan worden opgegeven als partitienummers gescheiden door het woord TO
, bijvoorbeeld: ON PARTITIONS (6 TO 8)
.
Als u verschillende typen gegevenscompressie voor verschillende partities wilt instellen, geeft u de optie DATA_COMPRESSION
meerdere keren op, bijvoorbeeld:
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)
);
U kunt ook de optie XML_COMPRESSION
meerdere keren opgeven, bijvoorbeeld:
REBUILD WITH
(
XML_COMPRESSION = OFF ON PARTITIONS (1),
XML_COMPRESSION = ON ON PARTITIONS (2, 4, 6 TO 8),
XML_COMPRESSION = OFF ON PARTITIONS (3, 5)
);
van toepassing op: SQL Server 2017 (14.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Hiermee wordt een indexbewerking hervat die handmatig is onderbroken, omdat de maximale duur is bereikt of vanwege een fout.
MAX_DURATION
Hiermee geeft u op hoe lang, in minuten voor gehele getallen, een hervatbare indexbewerking wordt uitgevoerd nadat deze is hervat voordat deze opnieuw wordt onderbroken.
WAIT_AT_LOW_PRIORITY
Hervatten van een indexbuildbewerking nadat een pauze de benodigde vergrendelingen moet verkrijgen.
WAIT_AT_LOW_PRIORITY
geeft aan dat de indexbuildbewerking vergrendelingen met lage prioriteit verkrijgt, waardoor andere bewerkingen kunnen worden voortgezet terwijl de indexbuildbewerking wacht. Het weglaten van de optie WAIT_AT_LOW_PRIORITY
is gelijk aan WAIT_AT_LOW_PRIORITY (MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE)
. Zie WAIT_AT_LOW_PRIORITYvoor meer informatie.
van toepassing op: SQL Server 2017 (14.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Hiermee wordt een hervatbare indexbuildbewerking onderbroken.
van toepassing op: SQL Server 2017 (14.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Hiermee wordt een actieve of onderbroken indexbuildbewerking afgebroken die is gestart als hervatbaar. U moet expliciet een ABORT
opdracht uitvoeren om een hervatbare indexbuildbewerking te beëindigen. Een fout of pauze in een hervatbare indexbewerking beëindigt de uitvoering ervan niet; in plaats daarvan blijft de bewerking in een onbeperkte onderbrekingsstatus.
ALTER INDEX
kan niet worden gebruikt om een index opnieuw te partitioneren of naar een andere bestandsgroep te verplaatsen. Deze instructie kan niet worden gebruikt om de indexdefinitie te wijzigen, zoals het toevoegen of verwijderen van kolommen of het wijzigen van de kolomvolgorde. Gebruik CREATE INDEX
met de DROP_EXISTING
-component om deze bewerkingen uit te voeren.
Wanneer een optie niet expliciet wordt opgegeven, wordt de huidige instelling toegepast. Als bijvoorbeeld een FILLFACTOR
instelling niet is opgegeven in de REBUILD
component, wordt de waarde van de opvulfactor die is opgeslagen in de systeemcatalogus gebruikt tijdens het herbouwproces. Als u de huidige instellingen voor indexopties wilt weergeven, gebruikt u sys.indexes.
De waarden voor ONLINE
, MAXDOP
en SORT_IN_TEMPDB
worden niet opgeslagen in de systeemcatalogus. Tenzij opgegeven in de indexinstructie, wordt de standaardwaarde voor de optie gebruikt.
Op computers met meerdere processors, net zoals bij andere query's, gebruikt ALTER INDEX REBUILD
automatisch meer processors om de scan- en sorteerbewerkingen uit te voeren die zijn gekoppeld aan het wijzigen van de index. Omgekeerd is ALTER INDEX REORGANIZE
één threadbewerking. Zie Parallelle indexbewerkingen configurerenvoor meer informatie.
In SQL Database in Microsoft Fabric wordt ALTER INDEX ALL
niet ondersteund, maar ALTER INDEX <index name>
wel.
Als u een index opnieuw opbouwt, wordt de index opnieuw gemaakt. Hierdoor wordt fragmentatie verwijderd, wordt schijfruimte vrijgemaakt door de pagina's te comprimeren op basis van de opgegeven of bestaande instelling voor opvulfactor en worden de indexrijen in aaneengesloten pagina's opnieuw gerangschikt. Wanneer ALL
is opgegeven, worden alle indexen in de tabel verwijderd en opnieuw opgebouwd in één transactie. Beperkingen voor refererende sleutels hoeven niet van tevoren te worden verwijderd. Wanneer indexen met 128 gebieden of meer opnieuw worden opgebouwd, worden de werkelijke toewijzingen van pagina-transacties en de bijbehorende vergrendelingen uitgesteld totdat de transactiedoorvoeringen zijn doorgevoerd. Zie Deferred deallocationvoor meer informatie.
Zie Indexonderhoud optimaliseren om de queryprestaties te verbeteren en het resourceverbruik te verminderenvoor meer informatie.
Het opnieuw ordenen van een index maakt gebruik van minimale systeemresources. Het defragmenteert het bladniveau van geclusterde en niet-geclusterde indexen in tabellen en weergaven door de volgorde van de pagina's op bladniveau fysiek te wijzigen zodat deze overeenkomen met de logische, van links naar rechtse volgorde van de leaf-knooppunten. Met het opnieuw ordenen van de indexpagina's worden ook de indexpagina's gecomprimeerd. Compressie is gebaseerd op de bestaande opvulfactorwaarde.
Wanneer ALL
is opgegeven, worden relationele indexen, zowel geclusterde als niet-geclusterde indexen, en XML-indexen in de tabel opnieuw ingedeeld. Sommige beperkingen van toepassing bij het opgeven van ALL
.
Zie Indexonderhoud optimaliseren om de queryprestaties te verbeteren en het resourceverbruik te verminderenvoor meer informatie.
Notitie
Voor een tabel met een geordende columnstore-index, ALTER INDEX REORGANIZE
de gegevens niet opnieuw sorteert. Als u de gegevens wilt gebruiken, gebruikt u ALTER INDEX REBUILD
.
Als u een index uitschakelt, voorkomt u dat gebruikers toegang hebben tot de index en voor geclusterde indexen naar de onderliggende tabelgegevens. De indexdefinitie blijft aanwezig in de systeemcatalogus. Als u een niet-geclusterde index of geclusterde index uitschakelt in een weergave, worden de indexgegevens fysiek verwijderd. Als u een geclusterde index uitschakelt, wordt de toegang tot de gegevens geblokkeerd, maar blijven de gegevens onbevlekt in de B-boomstructuur totdat de index is verwijderd of opnieuw wordt opgebouwd. Als u wilt zien of een index is uitgeschakeld, gebruikt u de kolom is_disabled
in de sys.indexes
catalogusweergave.
Notitie
Documentatie maakt gebruik van de term B-tree in het algemeen in verwijzing naar indexen. In rijstore-indexen implementeert de database-engine een B+-structuur. Dit geldt niet voor columnstore-indexen of indexen voor tabellen die zijn geoptimaliseerd voor geheugen. Zie de SQL Server- en Azure SQL-indexarchitectuur en ontwerphandleidingvoor meer informatie.
Als een tabel zich in een transactionele replicatiepublicatie bevindt, kunt u een index die is gekoppeld aan een primaire-sleutelbeperking niet uitschakelen. Deze indexen zijn vereist voor replicatie. Als u een dergelijke index wilt uitschakelen, moet u eerst de tabel uit de publicatie verwijderen. Zie Gegevens en databaseobjecten publicerenvoor meer informatie.
Gebruik de ALTER INDEX REBUILD
-instructie of de CREATE INDEX WITH DROP_EXISTING
-instructie om de index in te schakelen. Het opnieuw samenstellen van een uitgeschakelde geclusterde index kan niet worden uitgevoerd met de optie ONLINE
ingesteld op ON
. Zie Indexen en beperkingen uitschakelenvoor meer informatie.
U kunt de opties instellen ALLOW_ROW_LOCKS
, ALLOW_PAGE_LOCKS
, OPTIMIZE_FOR_SEQUENTIAL_KEY
, IGNORE_DUP_KEY
en STATISTICS_NORECOMPUTE
voor een opgegeven index zonder de index opnieuw te bouwen of te herorganiseren. De gewijzigde waarden worden onmiddellijk toegepast op de index. Gebruik sys.indexes
om deze instellingen weer te geven. Zie Indexopties instellenvoor meer informatie.
Wanneer ALLOW_ROW_LOCKS = ON
en ALLOW_PAGE_LOCK = ON
, vergrendelingen op rijniveau, paginaniveau en tabelniveau zijn toegestaan wanneer u de index opent. De database-engine kiest de juiste vergrendeling en kan de vergrendeling van een rij- of paginavergrendeling escaleren naar een tabelvergrendeling.
Wanneer ALLOW_ROW_LOCKS = OFF
en ALLOW_PAGE_LOCK = OFF
, is alleen een vergrendeling op tabelniveau toegestaan wanneer u de index opent.
Als ALL
wordt opgegeven wanneer de opties voor rij- of paginavergrendeling zijn ingesteld, worden de instellingen toegepast op alle indexen. Wanneer de onderliggende tabel een heap is, worden de instellingen op de volgende manieren toegepast:
Optie | Van toepassing op |
---|---|
ALLOW_ROW_LOCKS = ON of OFF |
De heap en alle bijbehorende niet-geclusterde indexen. |
ALLOW_PAGE_LOCKS = ON |
De heap en alle bijbehorende niet-geclusterde indexen. |
ALLOW_PAGE_LOCKS = OFF |
De niet-geclusterde indexen, waarbij alle paginavergrendelingen niet zijn toegestaan. Voor de heap zijn alleen de gedeelde paginavergrendelingen (S ), update (U ) en exclusief (X ) niet toegestaan. De database-engine kan nog steeds intentiepaginavergrendelingen (IS , IU of IX ) verkrijgen voor interne doeleinden. |
Waarschuwing
Het is niet raadzaam om rij- of paginavergrendelingen op een index uit te schakelen. Gelijktijdigheidsproblemen kunnen optreden en bepaalde functionaliteit is mogelijk niet beschikbaar. Een index kan bijvoorbeeld niet opnieuw worden geordend wanneer ALLOW_PAGE_LOCKS
is ingesteld op OFF
.
Wanneer u een index opnieuw opbouwt en de optie ONLINE
is ingesteld op ON
, zijn gegevens in de index, de bijbehorende tabel en andere indexen in dezelfde tabel beschikbaar voor query's en aanpassingen. U kunt ook online een deel van een index herbouwen die zich op één partitie bevindt. Exclusieve tabelvergrendelingen worden slechts gedurende een korte tijd aan het einde van de index opnieuw opgebouwd.
Het herorganiseren van een index wordt altijd online uitgevoerd. Het proces bevat vergrendelingen gedurende korte tijd en is onwaarschijnlijk dat query's of updates worden geblokkeerd.
U kunt gelijktijdige online indexbewerkingen alleen uitvoeren op dezelfde tabel of tabelpartitie wanneer u de volgende bewerkingen uitvoert:
Alle andere online indexbewerkingen die tegelijkertijd worden uitgevoerd, mislukken. U kunt bijvoorbeeld niet twee of meer indexen tegelijk opnieuw opbouwen in dezelfde tabel of een nieuwe index maken tijdens het opnieuw opbouwen van een bestaande index in dezelfde tabel.
Zie Indexbewerkingen online uitvoerenvoor meer informatie.
van toepassing op: SQL Server 2017 (14.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
U kunt ervoor zorgen dat een online index opnieuw kan worden opgebouwd. Dit betekent dat het opnieuw opbouwen van de index kan worden gestopt en later opnieuw kan worden gestart vanaf het punt waar de index is gestopt. Als u een index opnieuw wilt opbouwen als hervat, geeft u de optie RESUMABLE = ON
op.
De volgende richtlijnen zijn van toepassing op hervatbare indexbewerkingen:
RESUMABLE
wilt gebruiken, moet u ook de optie ONLINE
gebruiken.RESUMABLE
optie wordt niet bewaard in de metagegevens voor een bepaalde index en is alleen van toepassing op de duur van de huidige DDL-instructie. Daarom moet de RESUMABLE = ON
-component expliciet worden opgegeven om hervatting mogelijk te maken.MAX_DURATION
kan in twee contexten worden opgegeven: MAX_DURATION
voor de optie RESUMABLE
geeft het tijdsinterval op voor een index die wordt gemaakt. Na deze tijd is verstreken en als de indexbuild nog steeds wordt uitgevoerd, wordt deze onderbroken. U bepaalt wanneer de build voor een onderbroken index kan worden hervat. De tijd in minuten voor MAX_DURATION
moet groter zijn dan 0 minuten en kleiner dan of gelijk aan één week (7 * 24 * 60 = 10080 minuten). Een lange pauze in een indexbewerking kan merkbaar van invloed zijn op de DML-prestaties op een specifieke tabel en de capaciteit van de databaseschijf, omdat zowel de oorspronkelijke index als de zojuist gemaakte index schijfruimte vereisen en moeten worden bijgewerkt door DML-bewerkingen. Als MAX_DURATION
optie wordt weggelaten, wordt de indexbewerking voortgezet totdat deze is voltooid of totdat er een fout optreedt.MAX_DURATION
voor de optie WAIT_AT_LOW_PRIORITY
geeft de tijd aan waarop moet worden gewacht met vergrendelingen met lage prioriteit als de indexbewerking wordt geblokkeerd, voordat u actie onderneemt. Zie WAIT_AT_LOW_PRIORITY met online indexbewerkingenvoor meer informatie.ALTER INDEX PAUSE
uitvoeren of de opdracht KILL <session_id>
uitvoeren.ALTER INDEX REBUILD
-instructie opnieuw uitvoert met dezelfde parameters, wordt de herbouwbewerking van de index hervat. U kunt ook een onderbroken herbouwbewerking voor index hervatten door de ALTER INDEX RESUME
instructie uit te voeren.ABORT
wordt de sessie met een indexbuild beëindigd en wordt de indexbewerking geannuleerd. U kunt een indexbewerking die is afgebroken niet hervatten.MAXDOP
waarde wijzigen in een nieuwe waarde. Als MAXDOP
niet is opgegeven bij het hervatten van een indexbewerking die is onderbroken, wordt de MAXDOP
waarde gebruikt die wordt gebruikt voor het laatste cv. Als de optie MAXDOP
helemaal niet is opgegeven voor een herbouwbewerking voor indexen, wordt de standaardwaarde gebruikt.Een hervatbare indexbewerking wordt uitgevoerd totdat deze is voltooid, onderbreekt of mislukt. Als de bewerking wordt onderbroken, wordt er een fout weergegeven die aangeeft dat de bewerking is onderbroken en dat het opnieuw opbouwen van de index niet is voltooid. Als de bewerking mislukt, wordt er ook een fout uitgegeven.
Als u wilt zien of een indexbewerking wordt uitgevoerd als een hervatbare bewerking en om de huidige uitvoeringsstatus te controleren, gebruikt u de sys.index_resumable_operations catalogusweergave.
De volgende resources zijn vereist voor hervatbare indexbewerkingen:
Sch-M
) vereist aan het begin van de bewerking.Hervatbare bewerkingen voor het opnieuw opbouwen van indexen hebben de volgende beperkingen:
SORT_IN_TEMPDB = ON
wordt niet ondersteund voor hervatbare indexbewerkingen.RESUMABLE = ON
kan niet worden uitgevoerd binnen een expliciete transactie.ALTER INDEX REBUILD ALL
ALTER TABLE REBUILD
van toepassing op: SQL Server 2014 (12.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Wanneer u de optie WAIT_AT_LOW_PRIORITY
niet gebruikt, moeten alle actieve blokkerende transacties die vergrendelingen in de tabel of index bevatten, worden voltooid voordat de herbouwbewerking van de index wordt gestart en voltooid. Wanneer de online indexbewerking wordt gestart en voordat deze is voltooid, moet deze een gedeelde (S
) of een schemawijziging (Sch-M
) in de tabel verkrijgen en deze gedurende korte tijd bewaren. Hoewel de vergrendeling slechts korte tijd wordt bewaard, kan dit van invloed zijn op de doorvoer van de werkbelasting, de querylatentie verhogen of time-outs voor de uitvoering veroorzaken.
Om deze problemen te voorkomen, kunt u met de WAIT_AT_LOW_PRIORITY
optie het gedrag van S
of Sch-M
vergrendelingen beheren die nodig zijn om een online indexbewerking te starten en te voltooien, waarbij u uit drie opties kunt kiezen. In alle gevallen, als er tijdens de wachttijd die is opgegeven door MAX_DURATION = n [minutes]
er geen blokkering is die betrekking heeft op de indexbewerking, wordt de indexbewerking onmiddellijk uitgevoerd.
WAIT_AT_LOW_PRIORITY
maakt de online indexbewerking wachten met vergrendelingen met lage prioriteit, zodat andere bewerkingen met normale prioriteitsvergrendelingen ondertussen kunnen doorgaan. Het weglaten van de optie WAIT_AT_LOW_PRIORITY
is gelijk aan WAIT_AT_LOW_PRIORITY (MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE)
.
MAX_DURATION
=
tijd [MINUTES
]
De wachttijd (een geheel getal dat is opgegeven in minuten) die de onlineindexbewerking wacht met vergrendelingen met lage prioriteit. Als de bewerking wordt geblokkeerd voor de MAX_DURATION
tijd, wordt de opgegeven ABORT_AFTER_WAIT
actie uitgevoerd.
MAX_DURATION
tijd is altijd in minuten en het woord MINUTES
kan worden weggelaten.
ABORT_AFTER_WAIT
= [NONE
| SELF
| BLOCKERS
]
NONE
: Blijf wachten op de vergrendeling met de normale prioriteit.SELF
: Sluit de onlineindexbewerking die momenteel wordt uitgevoerd, zonder actie te ondernemen. De optie SELF
kan niet worden gebruikt wanneer MAX_DURATION
0 is.BLOCKERS
: alle gebruikerstransacties beëindigen die de onlineindexbewerking blokkeren, zodat de bewerking kan worden voortgezet. Voor de optie BLOCKERS
moet de principal de CREATE INDEX
- of ALTER INDEX
-instructie uitvoeren om de machtiging ALTER ANY CONNECTION
te hebben.U kunt de volgende uitgebreide gebeurtenissen gebruiken om indexbewerkingen te bewaken die wachten op vergrendelingen met een lage prioriteit:
lock_request_priority_state
process_killed_by_abort_blockers
ddl_with_wait_at_low_priority
Wanneer u een ruimtelijke index opnieuw bouwt, is de onderliggende gebruikerstabel niet beschikbaar tijdens de indexbewerking.
De PRIMARY KEY
beperking in de gebruikerstabel kan niet worden gewijzigd terwijl een ruimtelijke index is gedefinieerd in een kolom van die tabel. Als u de beperking PRIMARY KEY
wilt wijzigen, zet u eerst elke ruimtelijke index van de tabel neer. Nadat u de PRIMARY KEY
beperking hebt gewijzigd, kunt u elk van de ruimtelijke indexen opnieuw maken.
In één bewerking voor het opnieuw opbouwen van partities kunt u geen ruimtelijke indexen opgeven. U kunt echter ruimtelijke indexen opgeven in een tabel opnieuw samenstellen.
Als u opties wilt wijzigen die specifiek zijn voor een ruimtelijke index, zoals BOUNDING_BOX
of GRID
, kunt u een CREATE SPATIAL INDEX
-instructie gebruiken waarmee DROP_EXISTING = ON
wordt opgegeven, of de ruimtelijke index verwijderen en een nieuwe index maken. Zie CREATE SPATIAL INDEXvoor een voorbeeld.
Zie Gegevenscompressievoor meer informatie over gegevenscompressie.
Hier volgen de belangrijkste aandachtspunten in de context van indexbuildbewerkingen wanneer gegevenscompressie wordt gebruikt:
De volgende overwegingen zijn van toepassing op het opnieuw samenstellen van gepartitioneerde indexen:
ALTER INDEX <index> ... REBUILD PARTITION ... WITH DATA_COMPRESSION = ...
syntaxis herbouwt de opgegeven partitie van de index met de opgegeven compressieoptie. Als de WITH DATA_COMPRESSION
component wordt weggelaten, wordt de bestaande compressieoptie gebruikt.ALTER INDEX <index> ... REBUILD PARTITION = ALL
syntaxis herbouwt alle partities van de index met behulp van de bestaande compressieopties.ALTER INDEX <index> ... REBUILD PARTITION = ALL (WITH ...)
syntaxis herbouwt alle partities van de index. U kunt verschillende compressies kiezen voor verschillende partities met behulp van de DATA_COMPRESSION = ... ON PARTITIONS ( ...)
component.Als u wilt evalueren hoe het wijzigen van PAGE
en ROW
compressie van invloed is op een tabel, een index of een partitie, gebruikt u de sp_estimate_data_compression_savings opgeslagen procedure.
Wanneer u een index opnieuw bouwt, worden de statistieken op de index bijgewerkt met volledige scan op niet-gepartitioneerde indexen en met de standaardsamplingverhouding voor gepartitioneerde indexen. Er worden geen andere statistieken in de tabel bijgewerkt als onderdeel van het opnieuw samenstellen van de index.
De ALTER
machtiging voor de tabel of weergave is vereist.
PRIMARY
.FILESTREAM
opties.ALTER INDEX index1 ON table1 REBUILD;
ALTER INDEX ALL ON table1 REBUILD;
ALTER INDEX ALL ON dbo.table1 REBUILD;
Deze voorbeelden zijn van toepassing op columnstore-indexen.
In dit voorbeeld ziet u hoe de opdracht ALTER INDEX REORGANIZE
werkt. Er wordt een tabel gemaakt die meerdere rijgroepen bevat en laat vervolgens zien hoe REORGANIZE
de rijgroepen samenvoegt.
-- Create a database
CREATE DATABASE [columnstore];
GO
-- Create a rowstore staging table
CREATE TABLE [staging] (
AccountKey INT NOT NULL,
AccountDescription NVARCHAR(50),
AccountType NVARCHAR(50),
AccountCodeAlternateKey INT
);
-- Insert 10 million rows into the staging table.
DECLARE @loop INT;
DECLARE @AccountDescription VARCHAR(50);
DECLARE @AccountKey INT;
DECLARE @AccountType VARCHAR(50);
DECLARE @AccountCode INT;
SELECT @loop = 0
BEGIN TRANSACTION
WHILE (@loop < 300000)
BEGIN
SELECT @AccountKey = CAST(RAND() * 10000000 AS INT);
SELECT @AccountDescription = 'accountdesc ' + CONVERT(VARCHAR(20), @AccountKey);
SELECT @AccountType = 'AccountType ' + CONVERT(VARCHAR(20), @AccountKey);
SELECT @AccountCode = CAST(RAND() * 10000000 AS INT);
INSERT INTO staging
VALUES (
@AccountKey,
@AccountDescription,
@AccountType,
@AccountCode
);
SELECT @loop = @loop + 1;
END
COMMIT
-- Create a table for the clustered columnstore index
CREATE TABLE cci_target (
AccountKey INT NOT NULL,
AccountDescription NVARCHAR(50),
AccountType NVARCHAR(50),
AccountCodeAlternateKey INT
);
-- Convert the table to a clustered columnstore index named inxcci_cci_target;
CREATE CLUSTERED COLUMNSTORE INDEX idxcci_cci_target ON cci_target;
Gebruik de tablock-optie om rijen parallel in te voegen. Vanaf SQL Server 2016 (13.x) kan de INSERT INTO
-bewerking parallel worden uitgevoerd wanneer TABLOCK
wordt gebruikt.
INSERT INTO cci_target WITH (TABLOCK)
SELECT TOP 300000 * FROM staging;
Voer deze opdracht uit om de OPEN
deltarijgroepen te zien. Het aantal rijengroepen is afhankelijk van de mate van parallelle uitvoering.
SELECT *
FROM sys.dm_db_column_store_row_group_physical_stats
WHERE object_id = object_id('cci_target');
Voer deze opdracht uit om alle CLOSED
en OPEN
rijengroepen af te dwingen in de columnstore.
ALTER INDEX idxcci_cci_target ON cci_target REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON);
Voer deze opdracht opnieuw uit en u ziet dat kleinere rijengroepen worden samengevoegd in één gecomprimeerde rijgroep.
ALTER INDEX idxcci_cci_target ON cci_target REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON);
In dit voorbeeld wordt de optie REORGANIZE
gebruikt om elke CLOSED
deltarijgroep te comprimeren in de columnstore als een gecomprimeerde rijgroep. Dit is niet nodig, maar is handig wanneer de tuple-mover niet snel genoeg CLOSED
rijgroepen comprimeert.
U kunt beide voorbeelden uitvoeren in de AdventureWorksDW2022
voorbeelddatabase.
In dit voorbeeld wordt REORGANIZE
uitgevoerd op alle partities.
ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REORGANIZE;
In dit voorbeeld wordt REORGANIZE
uitgevoerd op een specifieke partitie.
-- REORGANIZE a specific partition
ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REORGANIZE PARTITION = 0;
van toepassing op: SQL Server 2016 (13.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Met de opdracht REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON)
elke OPEN
comprimeert en CLOSED
deltarijgroep in de columnstore als een gecomprimeerde rijgroep. Hierdoor wordt de deltastore geleegd en worden alle rijen gecomprimeerd in de columnstore. Dit is vooral handig nadat u veel invoegbewerkingen hebt uitgevoerd, omdat deze bewerkingen de rijen opslaan in een of meer deltarijgroepen.
REORGANIZE
combineert rijgroepen om rijgroepen te vullen tot een maximum aantal rijen <= 1.024.576. Dus wanneer u alle OPEN
en CLOSED
rijgroepen comprimeert, eindigt u niet met veel gecomprimeerde rijgroepen die er maar een paar rijen in hebben. U wilt dat rijgroepen zo vol mogelijk zijn om de gecomprimeerde grootte te verminderen en de queryprestaties te verbeteren.
In de volgende voorbeelden wordt de AdventureWorksDW2022
-database gebruikt.
In dit voorbeeld worden alle OPEN
en CLOSED
deltarijgroepen verplaatst naar de columnstore-index.
ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON);
In dit voorbeeld worden alle OPEN
en CLOSED
deltarijgroepen verplaatst naar de columnstore-index voor een specifieke partitie.
ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REORGANIZE PARTITION = 0 WITH (COMPRESS_ALL_ROW_GROUPS = ON);
is niet van toepassing op: SQL Server 2012 (11.x) en SQL Server 2014 (12.x).
Vanaf SQL Server 2016 (13.x) doet REORGANIZE
meer dan deltarijgroepen comprimeren in de columnstore. Het voert ook online defragmentatie uit. Ten eerste verkleint het de kolomopslag door fysiek verwijderde rijen te verwijderen wanneer 10% of meer van de rijen in een rijgroep zijn verwijderd. Vervolgens worden rijengroepen gecombineerd om grotere rijgroepen te vormen met maximaal 1024.576 rijen per rijgroep. Alle rijengroepen die worden gewijzigd, worden opnieuw gecomprimeerd.
Notitie
Vanaf SQL Server 2016 (13.x) is het opnieuw opbouwen van een columnstore-index niet meer nodig in de meeste situaties, omdat REORGANIZE
fysiek verwijderde rijen verwijdert en rijgroepen samenvoegt. De optie COMPRESS_ALL_ROW_GROUPS
dwingt alle OPEN
of CLOSED
deltarijgroepen af in de columnstore die eerder alleen kon worden uitgevoerd met een herbouwing.
REORGANIZE
online is en op de achtergrond plaatsvindt, zodat query's kunnen worden voortgezet wanneer de bewerking plaatsvindt.
In het volgende voorbeeld wordt een REORGANIZE
uitgevoerd om de index te defragmenteren door rijen die logisch uit de tabel zijn verwijderd, fysiek te verwijderen en rijgroepen samen te voegen.
ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REORGANIZE;
Van toepassing op: SQL Server, Azure SQL Database en Azure SQL Managed Instance
Tip
Vanaf SQL Server 2016 (13.x) en in Azure SQL Database raden we u aan om ALTER INDEX REORGANIZE
te gebruiken in plaats van ALTER INDEX REBUILD
voor columnstore-indexen.
Notitie
In SQL Server 2012 (11.x) en SQL Server 2014 (12.x) wordt REORGANIZE
alleen gebruikt om CLOSED
rijengroepen te comprimeren in de columnstore. De enige manier om de fragmentatiebewerkingen uit te voeren en alle deltarijgroepen in de columnstore af te dwingen, is door de index opnieuw te bouwen.
In dit voorbeeld ziet u hoe u een geclusterde columnstore-index herbouwt en alle deltarijgroepen forceert in de columnstore. In deze eerste stap wordt een tabel FactInternetSales2
in de AdventureWorksDW2022
-database voorbereid met een geclusterde columnstore-index en worden gegevens uit de eerste vier kolommen ingevoegd.
CREATE TABLE dbo.FactInternetSales2 (
ProductKey [int] NOT NULL,
OrderDateKey [int] NOT NULL,
DueDateKey [int] NOT NULL,
ShipDateKey [int] NOT NULL);
CREATE CLUSTERED COLUMNSTORE INDEX cci_FactInternetSales2
ON dbo.FactInternetSales2;
INSERT INTO dbo.FactInternetSales2
SELECT ProductKey, OrderDateKey, DueDateKey, ShipDateKey
FROM dbo.FactInternetSales;
SELECT * FROM sys.column_store_row_groups;
In de resultaten wordt één OPEN
rijgroep weergegeven, wat betekent dat SQL Server wacht tot er meer rijen worden toegevoegd voordat de rijgroep wordt gesloten en de gegevens naar de columnstore worden verplaatst. Met deze volgende instructie wordt de geclusterde columnstore-index opnieuw opgebouwd, waardoor alle rijen in de columnstore worden gedwongen.
ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REBUILD;
SELECT * FROM sys.column_store_row_groups;
De resultaten van de instructie SELECT
geven aan dat de rijgroep is COMPRESSED
, wat betekent dat de kolomsegmenten van de rijgroep nu worden gecomprimeerd en opgeslagen in de columnstore.
van toepassing op: SQL Server 2012 (11.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
Als u een partitie van een grote geclusterde columnstore-index opnieuw wilt opbouwen, gebruikt u ALTER INDEX REBUILD
met de partitieoptie. In dit voorbeeld wordt partitie 12 opnieuw opgebouwd. Vanaf SQL Server 2016 (13.x) raden we u aan om REBUILD
te vervangen door REORGANIZE
.
ALTER INDEX cci_fact3
ON fact3
REBUILD PARTITION = 12;
is niet van toepassing op: SQL Server 2012 (11.x)
U kunt ervoor kiezen om de grootte van een geclusterde columnstore-index nog verder te verkleinen met behulp van de optie COLUMNSTORE_ARCHIVE
gegevenscompressie. Dit is praktisch voor oudere gegevens die u goedkopere opslag wilt behouden. We raden u aan dit alleen te gebruiken op gegevens die niet vaak worden geopend, omdat decomprimeren langzamer is dan met de normale COLUMNSTORE
compressie.
In het volgende voorbeeld wordt een geclusterde columnstore-index opnieuw opgebouwd om archiveringscompressie te gebruiken en ziet u vervolgens hoe u de archiveringscompressie verwijdert. Het uiteindelijke resultaat maakt alleen gebruik van columnstore-compressie.
Bereid eerst het voorbeeld voor door een tabel te maken met een geclusterde columnstore-index. Comprimeer vervolgens de tabel verder met archiveringscompressie.
--Prepare the example by creating a table with a clustered columnstore index.
CREATE TABLE SimpleTable (
ProductKey [int] NOT NULL,
OrderDateKey [int] NOT NULL,
DueDateKey [int] NOT NULL,
ShipDateKey [int] NOT NULL
);
CREATE CLUSTERED INDEX cci_SimpleTable ON SimpleTable (ProductKey);
CREATE CLUSTERED COLUMNSTORE INDEX cci_SimpleTable
ON SimpleTable
WITH (DROP_EXISTING = ON);
--Compress the table further by using archival compression.
ALTER INDEX cci_SimpleTable ON SimpleTable
REBUILD
WITH (DATA_COMPRESSION = COLUMNSTORE_ARCHIVE);
GO
In dit voorbeeld wordt de archiefcompressie verwijderd en wordt alleen gebruikgemaakt van columnstore-compressie.
ALTER INDEX cci_SimpleTable ON SimpleTable
REBUILD
WITH (DATA_COMPRESSION = COLUMNSTORE);
GO
In het volgende voorbeeld wordt één index in de Employee
tabel in de AdventureWorks2022
-database opnieuw opgebouwd.
ALTER INDEX PK_Employee_EmployeeID ON HumanResources.Employee REBUILD;
In het volgende voorbeeld wordt het trefwoord ALL
opgegeven. Hiermee worden alle indexen herbouwd die zijn gekoppeld aan de tabel Production.Product
in de AdventureWorks2022
-database. Er worden drie opties opgegeven.
ALTER INDEX ALL ON Production.Product
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON, STATISTICS_NORECOMPUTE = ON);
In het volgende voorbeeld wordt de optie ONLINE toegevoegd, inclusief de optie vergrendelen met lage prioriteit, en wordt de optie voor rijcompressie toegevoegd.
van toepassing op: SQL Server 2014 (12.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
ALTER INDEX ALL ON Production.Product
REBUILD WITH
(
FILLFACTOR = 80,
SORT_IN_TEMPDB = ON,
STATISTICS_NORECOMPUTE = ON,
ONLINE = ON ( WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 4 MINUTES, ABORT_AFTER_WAIT = BLOCKERS ) ),
DATA_COMPRESSION = ROW
);
In het volgende voorbeeld wordt één geclusterde index in de AdventureWorks2022
-database opnieuw georganiseerd. Omdat de index een LOB-gegevenstype in het bladbladniveau bevat, worden met de instructie ook alle pagina's gecomprimeerd die de grote objectgegevens bevatten. Het opgeven van de optie WITH (LOB_COMPACTION = ON)
is niet vereist omdat de standaardwaarde IS INGESCHAKELD.
ALTER INDEX PK_ProductPhoto_ProductPhotoID ON Production.ProductPhoto REORGANIZE WITH (LOB_COMPACTION = ON);
In het volgende voorbeeld worden verschillende opties ingesteld voor de index AK_SalesOrderHeader_SalesOrderNumber
in de AdventureWorks2022
-database.
ALTER INDEX AK_SalesOrderHeader_SalesOrderNumber ON
Sales.SalesOrderHeader
SET (
STATISTICS_NORECOMPUTE = ON,
IGNORE_DUP_KEY = ON,
ALLOW_PAGE_LOCKS = ON
) ;
GO
In het volgende voorbeeld wordt een niet-geclusterde index in de Employee
tabel in de AdventureWorks2022
-database uitgeschakeld.
ALTER INDEX IX_Employee_ManagerID ON HumanResources.Employee DISABLE;
In het volgende voorbeeld wordt een PRIMARY KEY
beperking uitgeschakeld door de PRIMARY KEY
index in de AdventureWorks2022
-database uit te schakelen. De FOREIGN KEY
beperking voor de onderliggende tabel wordt automatisch uitgeschakeld en er wordt een waarschuwingsbericht weergegeven.
ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department DISABLE;
De resultatenset retourneert dit waarschuwingsbericht.
Warning: Foreign key 'FK_EmployeeDepartmentHistory_Department_DepartmentID'
on table 'EmployeeDepartmentHistory' referencing table 'Department'
was disabled as a result of disabling the index 'PK_Department_DepartmentID'.
In het volgende voorbeeld worden de beperkingen PRIMARY KEY
en FOREIGN KEY
ingeschakeld die zijn uitgeschakeld in voorbeeld F.
De beperking PRIMARY KEY
is ingeschakeld door de PRIMARY KEY
index opnieuw te bouwen.
ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department REBUILD;
De FOREIGN KEY
beperking wordt vervolgens ingeschakeld.
ALTER TABLE HumanResources.EmployeeDepartmentHistory
CHECK CONSTRAINT FK_EmployeeDepartmentHistory_Department_DepartmentID;
GO
In het volgende voorbeeld wordt één partitie, het partitienummer 5
, van de gepartitioneerde index IX_TransactionHistory_TransactionDate
in de AdventureWorks2022
-database opnieuw opgebouwd. Partitie 5 wordt opnieuw opgebouwd met ONLINE=ON
en de wachttijd van 10 minuten voor de vergrendeling met lage prioriteit wordt afzonderlijk toegepast op elke vergrendeling die is verkregen door de bewerking voor het opnieuw opbouwen van de index. Als de vergrendeling gedurende deze periode niet kan worden verkregen om het opnieuw opbouwen van de index te voltooien, wordt de instructie voor herbouwen zelf afgebroken vanwege ABORT_AFTER_WAIT = SELF
.
van toepassing op: SQL Server 2014 (12.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
-- Verify the partitioned indexes.
SELECT *
FROM sys.dm_db_index_physical_stats (DB_ID(),OBJECT_ID(N'Production.TransactionHistory'), NULL , NULL, NULL);
GO
--Rebuild only partition 5.
ALTER INDEX IX_TransactionHistory_TransactionDate
ON Production.TransactionHistory
REBUILD Partition = 5
WITH (ONLINE = ON (WAIT_AT_LOW_PRIORITY (MAX_DURATION = 10 minutes, ABORT_AFTER_WAIT = SELF)));
GO
In het volgende voorbeeld wordt een index opnieuw opgebouwd voor een niet-gepartitioneerde rowstore-tabel.
ALTER INDEX IX_INDEX1
ON T1
REBUILD
WITH (DATA_COMPRESSION = PAGE);
GO
van toepassing op: SQL Server 2022 (16.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance.
In het volgende voorbeeld wordt een index opnieuw opgebouwd voor een niet-gepartitioneerde rowstore-tabel.
ALTER INDEX IX_INDEX1
ON T1
REBUILD
WITH (XML_COMPRESSION = ON);
GO
Zie Gegevenscompressievoor meer voorbeelden van gegevenscompressie.
van toepassing op: SQL Server 2017 (14.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance
In de volgende voorbeelden ziet u hoe u online hervatbare indexrebouw kunt gebruiken.
Voer een online index opnieuw opbouwen uit als hervatbare bewerking met MAXDOP = 1
. Als u dezelfde opdracht opnieuw uitvoert nadat een indexbewerking is onderbroken, wordt de herbouwbewerking van de index automatisch hervat.
ALTER INDEX test_idx on test_table REBUILD WITH (ONLINE = ON, MAXDOP = 1, RESUMABLE = ON);
Voer een online index opnieuw opbouwen uit als hervatbare bewerking met MAX_DURATION
ingesteld op 240 minuten.
ALTER INDEX test_idx on test_table REBUILD WITH (ONLINE = ON, RESUMABLE = ON, MAX_DURATION = 240);
Pauzeer een actieve, hervatbare online index opnieuw opbouwen.
ALTER INDEX test_idx on test_table PAUSE;
Hervatten van het opnieuw samenstellen van een online index voor een herbouw van een index die is uitgevoerd als hervatbare bewerking die een nieuwe waarde voor MAXDOP
ingesteld op 4.
ALTER INDEX test_idx on test_table RESUME WITH (MAXDOP = 4);
Hervat een online herbouwbewerking voor indexen voor een online herbouwbewerking van een index die is uitgevoerd als hervatbaar. Stel MAXDOP
in op 2, stel de uitvoeringstijd in voor de index die wordt uitgevoerd als hervatbaar tot 240 minuten en als een index wordt geblokkeerd op de vergrendeling, wacht u 10 minuten en daarna worden alle blokkeringen gedood.
ALTER INDEX test_idx on test_table
RESUME WITH (MAXDOP = 2, MAX_DURATION = 240 MINUTES,
WAIT_AT_LOW_PRIORITY (MAX_DURATION = 10, ABORT_AFTER_WAIT = BLOCKERS));
Herbouwbewerking van hervatbare index afbreken die wordt uitgevoerd of onderbroken.
ALTER INDEX test_idx on test_table ABORT;
gebeurtenis
31 mrt, 23 - 2 apr, 23
De grootste SQL-, Fabric- en Power BI-leerevenement. 31 maart – 2 april. Gebruik code FABINSIDER om $ 400 te besparen.
Zorg dat u zich vandaag nog registreert