Tôi chỉ muốn đưa vào một lời cảnh báo: xin vui lòng rất cẩn thận chọn chỉ mục nhóm của bạn! Mỗi bảng dữ liệu "thông thường" phải có chỉ số nhóm, vì có chỉ số nhóm thực sự tăng tốc rất nhiều hoạt động - có, tăng tốc, thậm chí chèn và xóa! Nhưng chỉ khi bạn chọn một chỉ số nhóm tốt.
Đó là cấu trúc dữ liệu được sao chép nhiều nhất trong cơ sở dữ liệu SQL Server của bạn. Khóa phân cụm cũng sẽ là một phần của mỗi chỉ mục không được nhóm trên bảng của bạn.
Bạn nên sử dụng cẩn thận khi chọn một chìa khóa phân nhóm - nó phải là:
hẹp (4 byte lý tưởng)
độc đáo (đó là "con trỏ hàng" sau Nếu bạn không làm cho nó độc đáo SQL Server sẽ làm điều đó cho bạn trong nền, chi phí cho bạn một vài byte cho mỗi lần nhập số lượng hàng và số lượng chỉ số nonclustered bạn có - điều này có thể rất tốn kém!)
tĩnh (không bao giờ thay đổi - nếu có thể)
lý tưởng ngày càng tăng vì vậy bạn sẽ không kết thúc với sự phân mảnh chỉ số khủng khiếp (một GUID là toàn trái ngược với một chìa khóa phân nhóm tốt - cho mà lý do cụ thể)
nó nên không nullable và lý tưởng rộng cũng cố định - một varchar(250)
làm cho một phân nhóm rất nghèo chính
.210
Bất cứ điều gì khác thực sự cần được mức độ thứ hai và thứ ba có tầm quan trọng đằng sau những điểm ....
Xem một số Kimberly Tripp (The Queen of Indexing) bài đăng trên blog về chủ đề này - bất cứ điều gì cô đã viết trên blog của mình là hoàn toàn vô giá - đọc nó, tiêu hóa nó - sống theo nó!
Nguồn
2013-08-19 04:41:08
Cám ơn đáp ứng. Tôi đã nhận thức được điều đó.Câu hỏi của tôi là sẽ có một tình huống mà việc tạo ra một chỉ số không nhóm sẽ có lợi nhiều hơn việc tạo ra một chỉ số nhóm – armulator
Có, bạn nên tránh một chỉ số nhóm khi; cột có cardinality thấp, không có thứ tự cụ thể, thường xuyên cập nhật, không tuần tự, nó là một tổng hợp của nhiều cột ... –
Cảm ơn câu trả lời của bạn. Hữu ích của nó – armulator