Penyimpanan tumpukan tidak ada hubungannya dengan tumpukan ini .
Heap hanya berarti catatan itu sendiri tidak diurutkan (yaitu tidak ditautkan satu sama lain).
Saat Anda memasukkan catatan, catatan itu akan dimasukkan ke dalam ruang kosong yang ditemukan database.
Memperbarui baris dalam tabel berbasis heap tidak memengaruhi catatan lain (meskipun memengaruhi indeks sekunder)
Jika Anda membuat indeks sekunder pada HEAP
tabel, RID
(semacam penunjuk fisik ke ruang penyimpanan) digunakan sebagai penunjuk baris.
Indeks berkerumun berarti bahwa catatan adalah bagian dari B-Tree
. Saat Anda memasukkan catatan, B-Tree
perlu ditautkan ulang.
Memperbarui baris dalam tabel berkerumun menyebabkan relinking dari B-Tree, i. e. memperbarui pointer internal di catatan lain.
Jika Anda membuat indeks sekunder pada tabel berkerumun, nilai kunci indeks berkerumun digunakan sebagai penunjuk baris.
Ini berarti indeks berkerumun harus unik. Jika indeks berkerumun tidak unik, kolom tersembunyi khusus yang disebut uniquifier
ditambahkan ke kunci indeks yang membuatnya unik (dan ukurannya lebih besar).
Perlu juga dicatat bahwa membuat indeks sekunder pada kolom membuat nilai atau kunci indeks berkerumun menjadi bagian dari kunci indeks sekunder.
Dengan membuat indeks pada tabel berkerumun, Anda sebenarnya selalu mendapatkan indeks komposit
CREATE UNIQUE CLUSTERED INDEX CX_mytable_1234 (col1, col2, col3, col4)
CREATE INDEX IX_mytable_5678 (col5, col6, col7, col8)
Indeks IX_mytable_5678
sebenarnya adalah indeks pada kolom berikut:
col5
col6
col7
col8
col1
col2
col3
col4
Ini memiliki satu efek samping lagi:
Sebuah DESC
kondisi dalam indeks satu kolom pada tabel berkerumun masuk akal di SQL Server
Indeks ini:
CREATE INDEX IX_mytable ON mytable (col1)
dapat digunakan dalam kueri seperti ini:
SELECT TOP 100 *
FROM mytable
ORDER BY
col1, id
, sedangkan yang ini:
CREATE INDEX IX_mytable ON mytable (col1 DESC)
dapat digunakan dalam kueri seperti ini:
SELECT TOP 100 *
FROM mytable
ORDER BY
col1, id DESC