Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Menentukan sekumpulan opsi yang dapat diterapkan ke indeks yang merupakan bagian dari definisi batasan yang dibuat dengan menggunakan ALTER TABLE.
Untuk deskripsi lengkap opsi indeks, lihat MEMBUAT INDEKS.
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 | NONAKTIF }
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru
Menentukan padding indeks. Default adalah OFF.
ON
Persentase ruang kosong yang ditentukan oleh
FILLFACTORditerapkan ke halaman tingkat menengah indeks.OFF atau fillfactor tidak ditentukan
Halaman tingkat menengah diisi ke kapasitas dekat, menyisakan ruang yang cukup untuk setidaknya satu baris dari ukuran maksimum yang dapat dimiliki indeks, mengingat set kunci pada halaman perantara.
FILLFACTOR = fillfactor
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru
Menentukan persentase yang menunjukkan seberapa penuh Mesin Database harus membuat tingkat daun setiap halaman indeks selama pembuatan atau perubahan indeks. Nilai yang ditentukan harus berupa nilai bilangan bulat dari 1 hingga 100. Defaultnya adalah 0.
Note
Nilai faktor pengisian 0 dan 100 identik dalam segala hal.
IGNORE_DUP_KEY = { AKTIF | NONAKTIF }
Menentukan jenis respons saat operasi sisipkan mencoba menyisipkan nilai kunci duplikat ke dalam indeks unik. Opsi IGNORE_DUP_KEY hanya berlaku untuk menyisipkan operasi setelah indeks dibuat atau dibangun kembali. Opsi ini tidak berpengaruh saat menjalankan CREATE INDEX, ALTER INDEX, atau UPDATE. Default adalah OFF.
ON
Pesan peringatan terjadi ketika nilai kunci duplikat disisipkan ke dalam indeks unik. Hanya baris yang melanggar batasan keunikan yang gagal.
OFF
Pesan kesalahan terjadi ketika nilai kunci duplikat disisipkan ke dalam indeks unik. Seluruh
INSERToperasi digulung balik.
IGNORE_DUP_KEY tidak dapat diatur ke untuk ON indeks yang dibuat pada tampilan, indeks nonunique, indeks XML, indeks spasial, dan indeks yang difilter.
Untuk melihat IGNORE_DUP_KEY, gunakan sys.indexes.
Dalam sintaksis kompatibel mundur, WITH IGNORE_DUP_KEY setara dengan WITH IGNORE_DUP_KEY = ON.
STATISTICS_NORECOMPUTE = { AKTIF | NONAKTIF }
Nonaktifkan atau aktifkan opsi pembaruan statistik otomatis, AUTO_STATISTICS_UPDATE, untuk statistik yang terkait dengan indeks yang ditentukan. Default adalah OFF.
ON
Pembaruan statistik otomatis dinonaktifkan setelah indeks dibangun kembali.
OFF
Pembaruan statistik otomatis diaktifkan setelah indeks dibangun kembali.
Untuk memulihkan pembaruan statistik otomatis, atur ke STATISTICS_NORECOMPUTE, atau jalankan OFFUPDATE STATISTICS tanpa NORECOMPUTE klausa.
Warning
Jika Anda menonaktifkan pembaruan statistik otomatis, mungkin mencegah Pengoptimal Kueri memilih rencana eksekusi optimal untuk kueri yang melibatkan tabel. Anda harus menggunakan opsi ini dengan hemat, dan hanya oleh administrator database yang memenuhi syarat.
Pengaturan ini tidak mencegah pembaruan otomatis dengan fullscan statistik terkait indeks, selama operasi pembangunan ulang.
ALLOW_ROW_LOCKS = { AKTIF | NONAKTIF }
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru
Menentukan apakah kunci baris diizinkan. Defaultnya adalah ON.
ON
Kunci baris diperbolehkan saat mengakses indeks. Mesin Database menentukan kapan kunci baris digunakan.
OFF
Kunci baris tidak digunakan.
ALLOW_PAGE_LOCKS = { AKTIF | NONAKTIF }
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru
Menentukan apakah kunci halaman diizinkan. Defaultnya adalah ON.
ON
Kunci halaman diizinkan saat mengakses indeks. Mesin Database menentukan kapan kunci halaman digunakan.
OFF
Kunci halaman tidak digunakan.
OPTIMIZE_FOR_SEQUENTIAL_KEY = { AKTIF | NONAKTIF }
Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru
Menentukan apakah akan mengoptimalkan ketidakcocokan sisipan halaman terakhir atau tidak. Default adalah OFF. Untuk informasi selengkapnya, lihat bagian Kunci berurutan di CREATE INDEX artikel.
SORT_IN_TEMPDB = { AKTIF | NONAKTIF }
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru
Menentukan apakah akan menyimpan hasil pengurutan di tempdb. Default adalah OFF.
ON
Hasil pengurutan menengah yang digunakan untuk membangun indeks disimpan di
tempdb. Ini mungkin mengurangi waktu yang diperlukan untuk membuat indeks jikatempdbberada pada kumpulan disk yang berbeda dari database pengguna. Namun, ini meningkatkan jumlah ruang disk yang digunakan selama build indeks.OFF
Hasil pengurutan menengah disimpan dalam database yang sama dengan indeks.
ONLINE = { AKTIF | NONAKTIF }
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru
Menentukan apakah tabel yang mendasari dan indeks terkait tersedia untuk kueri dan modifikasi data selama operasi indeks. Default adalah OFF.
REBUILD dapat dilakukan sebagai ONLINE operasi.
Note
Indeks nonclustered unik tidak dapat dibuat secara online. Ini termasuk indeks yang dibuat karena UNIQUE batasan atau PRIMARY KEY .
ON
Kunci tabel jangka panjang tidak ditahan selama operasi indeks. Selama fase utama operasi indeks, hanya kunci Berbagi Niat (IS) yang ditahan pada tabel sumber. Ini memungkinkan kueri atau pembaruan pada tabel dan indeks yang mendasarinya untuk melanjutkan. Pada awal operasi, kunci Bersama (S) ditahan pada objek sumber untuk waktu yang singkat. Pada akhir operasi, untuk waktu yang singkat, kunci S (Bersama) diperoleh pada sumber jika indeks non-kluster sedang dibuat; atau kunci Sch-M (Modifikasi Skema) diperoleh ketika indeks berkluster dibuat atau dihilangkan secara online dan ketika indeks berkluster atau non-kluster sedang dibangun kembali. Meskipun kunci indeks online adalah kunci metadata pendek, terutama kunci Sch-M harus menunggu semua transaksi pemblokiran selesai pada tabel ini. Selama waktu tunggu, kunci Sch-M memblokir semua transaksi lain yang menunggu di belakang kunci ini saat mengakses tabel yang sama.
ONLINEtidak dapat diatur keONsaat indeks sedang dibuat pada tabel sementara lokal.Note
Pembangunan ulang indeks online dapat mengatur opsi low_priority_lock_wait yang dijelaskan nanti di bagian ini. low_priority_lock_wait mengelola prioritas kunci S dan Sch-M selama pembangunan ulang indeks online.
OFF
Kunci tabel diterapkan selama operasi indeks. Ini mencegah semua akses pengguna ke tabel yang mendasar selama operasi. Operasi indeks offline yang membuat, membangun kembali, atau menghilangkan indeks berkluster, atau membangun kembali atau menghilangkan indeks non-kluster, memperoleh kunci Modifikasi Skema (Sch-M) pada tabel. Ini mencegah semua akses pengguna ke tabel yang mendasar selama operasi. Operasi indeks offline yang membuat indeks nonclustered memperoleh kunci Bersama (S) pada tabel. Ini mencegah pembaruan pada tabel yang mendasar tetapi memungkinkan operasi baca, seperti
SELECTpernyataan.
Untuk informasi selengkapnya, lihat Cara Kerja Operasi Indeks Online.
Note
Operasi indeks online tidak tersedia di setiap edisi Microsoft SQL Server. Untuk daftar fitur yang didukung oleh edisi SQL Server, lihat Edisi dan fitur yang didukung SQL Server 2022.
DAPAT DI-RESUMABLE = { ON | OFF}
Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru
Menentukan apakah ALTER TABLE ADD CONSTRAINT operasi dapat diulang. Tambahkan operasi batasan tabel dapat dilanjutkan saat ON. Operasi tambahkan batasan tabel tidak dapat dilanjutkan saat OFF. Defaultnya adalah OFF.
RESUMABLE Saat opsi diatur ke ON, opsi ONLINE = ON diperlukan.
MAX_DURATION ketika digunakan dengan RESUMABLE = ON (memerlukan ONLINE = ON) menunjukkan waktu (nilai bilangan bulat yang ditentukan dalam menit) bahwa operasi batasan penambahan online yang dapat dilanjutkan dijalankan sebelum dijeda. Jika tidak ditentukan, operasi berlanjut hingga selesai.
MAXDOPjuga didukung.RESUMABLE = ON
Untuk informasi selengkapnya tentang mengaktifkan dan menggunakan operasi yang dapat dilanjutkan ALTER TABLE ADD CONSTRAINT , lihat Menambahkan batasan tabel yang dapat dilanjutkan.
MAXDOP = max_degree_of_parallelism
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru
Mengambil alih tingkat maksimum opsi konfigurasi paralelisme selama operasi indeks. Untuk informasi selengkapnya, lihat Mengonfigurasi tingkat paralelisme maksimum (opsi konfigurasi server). Gunakan MAXDOP untuk membatasi jumlah prosesor yang digunakan dalam eksekusi rencana paralel. Maksimum adalah 64 prosesor.
max_degree_of_parallelism dapat berupa:
-
1: Menekan pembuatan rencana paralel. -
>1: Membatasi jumlah maksimum prosesor yang digunakan dalam operasi indeks paralel ke angka yang ditentukan. -
0(default): Menggunakan jumlah prosesor aktual atau lebih sedikit berdasarkan beban kerja sistem saat ini.
Untuk informasi selengkapnya, lihat Mengonfigurasi Operasi Indeks Paralel.
Note
Operasi indeks paralel tidak tersedia di setiap edisi Microsoft SQL Server. Untuk daftar fitur yang didukung oleh edisi SQL Server, lihat Edisi dan fitur yang didukung SQL Server 2022.
DATA_COMPRESSION
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru
Menentukan opsi kompresi data untuk tabel, nomor partisi, atau rentang partisi yang ditentukan. Opsinya meliputi:
NONE
Tabel atau partisi yang ditentukan tidak dikompresi. Hanya berlaku untuk tabel rowstore; tidak berlaku untuk tabel penyimpan kolom.
ROW
Tabel atau partisi tertentu dikompresi dengan menggunakan pemadatan baris. Hanya berlaku untuk tabel rowstore; tidak berlaku untuk tabel penyimpan kolom.
PAGE
Tabel atau partisi yang ditentukan dikompresi dengan menggunakan pemadatan halaman. Hanya berlaku untuk tabel rowstore; tidak berlaku untuk tabel penyimpan kolom.
COLUMNSTORE
Berlaku untuk: SQL Server 2014 (12.x) dan versi yang lebih baru
Hanya berlaku untuk tabel penyimpan kolom.
COLUMNSTOREmenentukan untuk mendekompresi partisi yang dikompresi denganCOLUMNSTORE_ARCHIVEopsi . Ketika data dipulihkan,COLUMNSTOREindeks terus dikompresi dengan kompresi penyimpan kolom yang digunakan untuk semua tabel penyimpan kolom.COLUMNSTORE_ARCHIVE
Berlaku untuk: SQL Server 2014 (12.x) dan versi yang lebih baru
Hanya berlaku untuk tabel penyimpan kolom, yang merupakan tabel yang disimpan dengan indeks penyimpan kolom berkluster.
COLUMNSTORE_ARCHIVElebih lanjut memadatkan partisi yang ditentukan ke ukuran yang lebih kecil. Ini dapat digunakan untuk pengarsipan, atau untuk situasi lain yang membutuhkan lebih sedikit penyimpanan dan mampu lebih banyak waktu untuk penyimpanan dan pengambilan
Untuk informasi selengkapnya tentang pemadatan, lihat Pemadatan data.
XML_COMPRESSION
Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru, Azure SQL Database, dan Azure SQL Managed Instance.
Menentukan opsi pemadatan XML untuk kolom tipe data xml apa pun dalam tabel. Opsinya meliputi:
ON
Kolom yang menggunakan jenis data xml dikompresi.
OFF
Kolom yang menggunakan tipe data xml tidak dikompresi.
ON PARTITIONS ( { <partition_number_expression> | <range> } [ ,... n ] )
Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru
Menentukan partisi yang diterapkan pengaturan DATA_COMPRESSION atau XML_COMPRESSION . Jika tabel tidak dipartisi, ON PARTITIONS argumen akan menghasilkan kesalahan.
ON PARTITIONS Jika klausa tidak disediakan, DATA_COMPRESSION opsi atau XML_COMPRESSION berlaku untuk semua partisi tabel yang dipartisi.
<partition_number_expression> dapat ditentukan dengan cara berikut:
- Berikan nomor partisi, misalnya:
ON PARTITIONS (2). - Berikan nomor partisi untuk beberapa partisi individual yang dipisahkan oleh koma, misalnya:
ON PARTITIONS (1, 5). - Berikan rentang dan partisi individual, misalnya:
ON PARTITIONS (2, 4, 6 TO 8).
<range> dapat ditentukan sebagai nomor partisi yang dipisahkan oleh kata TO, misalnya: ON PARTITIONS (6 TO 8).
Untuk mengatur berbagai jenis kompresi data untuk partisi yang berbeda, tentukan DATA_COMPRESSION opsi lebih dari sekali, misalnya:
--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>
Dalam kebanyakan kasus, membangun kembali indeks juga membangun kembali semua partisi indeks yang dipartisi. Opsi berikut, saat diterapkan ke satu partisi, jangan bangun kembali semua partisi.
SORT_IN_TEMPDBMAXDOPDATA_COMPRESSIONXML_COMPRESSION
low_priority_lock_wait
Berlaku untuk: SQL Server 2014 (12.x) dan versi yang lebih baru
Pembangunan SWITCH kembali indeks atau online selesai segera setelah tidak ada operasi pemblokiran untuk tabel ini.
WAIT_AT_LOW_PRIORITY menunjukkan bahwa jika SWITCH operasi pembangunan ulang atau indeks online tidak dapat segera diselesaikan, operasi tersebut akan menunggu. Operasi ini memegang kunci prioritas rendah, memungkinkan operasi lain yang menahan kunci yang bertentangan dengan pernyataan DDL untuk melanjutkan.
WAIT AT LOW PRIORITY Menghilangkan opsi setara dengan WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE).
MAX_DURATION = waktu [ MENIT ]
Waktu tunggu (nilai bilangan bulat yang ditentukan dalam menit) yang SWITCH kunci pembangunan ulang indeks atau online yang harus diperoleh, menunggu saat menjalankan perintah DDL. Operasi SWITCH pembangunan ulang indeks atau online mencoba untuk segera diselesaikan. Jika operasi diblokir untuk waktu tersebut MAX_DURATION , salah ABORT_AFTER_WAIT satu tindakan dijalankan.
MAX_DURATION waktu selalu dalam hitungan menit, dan kata MINUTES dapat dihilangkan.
ABORT_AFTER_WAIT = { NONE | SELF | PEMBLOKIR }
NONE
SWITCHMelanjutkan operasi pembangunan kembali atau indeks online tanpa mengubah prioritas kunci (menggunakan prioritas reguler).SELF
Keluar dari
SWITCHoperasi DDL pembangunan ulang indeks online atau yang saat ini sedang dijalankan tanpa mengambil tindakan apa pun.BLOCKERS
Mematikan semua transaksi pengguna yang memblokir operasi DDL pembangunan ulang indeks atau online saat ini
SWITCHsehingga operasi dapat dilanjutkan.BLOCKERSALTER ANY CONNECTIONmemerlukan izin.