Câu hỏi này là về những gì xảy ra với việc tổ chức lại dữ liệu trong chỉ mục nhóm khi chèn xong. Tôi giả định rằng sẽ tốn kém hơn khi thực hiện chèn trên một bảng có chỉ số nhóm hơn một không phải vì việc tổ chức lại dữ liệu trong một chỉ số nhóm liên quan đến việc thay đổi bố cục vật lý của dữ liệu trên đĩa. Tôi không chắc chắn làm thế nào để cụm từ câu hỏi của tôi ngoại trừ thông qua một ví dụ tôi đã đi qua tại nơi làm việc.Chỉ mục nhóm - đa phần so với chỉ mục một phần và ảnh hưởng của các lần chèn/xóa
Giả sử có một bảng (Junk) và có hai truy vấn được thực hiện trên bảng, truy vấn đầu tiên tìm kiếm theo Tên và truy vấn tìm kiếm thứ hai theo Tên và Thứ gì đó. Như tôi đang làm việc trên cơ sở dữ liệu tôi phát hiện ra rằng bảng đã được tạo ra với hai chỉ số, một để hỗ trợ mỗi truy vấn, như vậy:
--drop table Junk1
CREATE TABLE Junk1
(
Name char(5),
Something char(5),
WhoCares int
)
CREATE CLUSTERED INDEX IX_Name ON Junk1
(
Name
)
CREATE NONCLUSTERED INDEX IX_Name_Something ON Junk1
(
Name, Something
)
Bây giờ khi tôi nhìn vào hai chỉ số, có vẻ như là IX_Name dư thừa từ IX_Name_Something có thể được sử dụng bởi bất kỳ truy vấn nào muốn tìm kiếm theo Tên. Vì vậy, tôi sẽ loại bỏ IX_Name và làm IX_Name_Something các chỉ số nhóm thay vì:
--drop table Junk2
CREATE TABLE Junk2
(
Name char(5),
Something char(5),
WhoCares int
)
CREATE CLUSTERED INDEX IX_Name_Something ON Junk2
(
Name, Something
)
Có người cho rằng chương trình lập chỉ mục đầu tiên nên được giữ vì nó sẽ cho kết quả chèn hiệu quả hơn/xóa (giả định rằng không có cần phải lo lắng về cập nhật cho Tên và Cái gì đó). Điều đó có hợp lý không? Tôi nghĩ phương pháp lập chỉ mục thứ hai sẽ tốt hơn vì nó có nghĩa là một chỉ số ít cần phải được duy trì.
Tôi sẽ đánh giá cao bất kỳ thông tin chi tiết nào về ví dụ cụ thể này hoặc chỉ cho tôi biết thêm thông tin về việc duy trì các chỉ mục nhóm.
Đẹp, giải thích kỹ lưỡng. –