Lưu trữ đống không liên quan gì đến những đống này .
Heap chỉ có nghĩa là bản thân các bản ghi không được sắp xếp theo thứ tự (i. E. Không được liên kết với nhau).
Khi bạn chèn một bản ghi, bản ghi sẽ chỉ được chèn vào không gian trống mà cơ sở dữ liệu tìm thấy.
Cập nhật một hàng trong bảng dựa trên heap không ảnh hưởng đến các bản ghi khác (mặc dù nó ảnh hưởng đến các chỉ mục phụ)
Nếu bạn tạo chỉ mục phụ trên HEAP
bảng, RID
(một loại con trỏ vật lý tới không gian lưu trữ) được sử dụng làm con trỏ hàng.
Chỉ mục được phân cụm có nghĩa là các bản ghi là một phần của B-Tree
. Khi bạn chèn một bản ghi, B-Tree
cần được liên kết lại.
Việc cập nhật một hàng trong một bảng được nhóm lại khiến B-Tree liên kết lại, i. e. cập nhật con trỏ nội bộ trong các bản ghi khác.
Nếu bạn tạo chỉ mục phụ trên bảng được phân nhóm, giá trị của khóa chỉ mục được phân nhóm sẽ được sử dụng làm con trỏ hàng.
Điều này có nghĩa là một chỉ mục được phân nhóm phải là duy nhất. Nếu một chỉ mục được phân nhóm không phải là duy nhất, một cột ẩn đặc biệt được gọi là uniquifier
được nối vào khóa chỉ mục tạo nếu là duy nhất (và có kích thước lớn hơn).
Cũng cần lưu ý rằng việc tạo chỉ mục phụ trên một cột làm cho các giá trị hoặc khóa của chỉ mục được phân nhóm trở thành một phần của khóa của chỉ mục thứ hai.
Bằng cách tạo chỉ mục trên bảng được phân nhóm, trên thực tế, bạn luôn nhận được chỉ mục tổng hợp
CREATE UNIQUE CLUSTERED INDEX CX_mytable_1234 (col1, col2, col3, col4)
CREATE INDEX IX_mytable_5678 (col5, col6, col7, col8)
Chỉ mục IX_mytable_5678
thực tế là một chỉ mục trên các cột sau:
col5
col6
col7
col8
col1
col2
col3
col4
Điều này có một tác dụng phụ nữa:
Một DESC
điều kiện trong chỉ mục một cột trên một bảng được phân nhóm có ý nghĩa trong SQL Server
Chỉ số này:
CREATE INDEX IX_mytable ON mytable (col1)
có thể được sử dụng trong một truy vấn như sau:
SELECT TOP 100 *
FROM mytable
ORDER BY
col1, id
, trong khi cái này:
CREATE INDEX IX_mytable ON mytable (col1 DESC)
có thể được sử dụng trong một truy vấn như sau:
SELECT TOP 100 *
FROM mytable
ORDER BY
col1, id DESC