Sự khác biệt giữa tìm kiếm chỉ mục cụm và tìm kiếm chỉ mục không cụm


10

Sự khác biệt giữa tìm kiếm Chỉ số cụm (CI) và tìm kiếm Chỉ số không cụm (NCI) là gì? Liệu một người thực hiện tốt hơn so với người khác?

Lý do tôi hỏi điều này là vì tôi có một bảng với 50 triệu hàng và 150 cột. Nó có một cột được IDđịnh nghĩa là chỉ mục cụm. Có thêm một NCI trên đó với cùng ID khóa và chỉ mục bảy includecột. Dường như với tôi rằng chỉ số NC là một bản sao ở đây và có thể được loại bỏ một cách an toàn.

Vì vậy, tôi muốn một số quan điểm / lời khuyên của chuyên gia nếu nó có thể được bỏ đi một cách an toàn hoặc nên giữ nó nguyên vẹn?


Bạn đang nói rằng TẤT CẢ các cột được bao gồm trong chỉ mục không cụm?
Ian Ringrose

Không. Bảng có 150 cột trong đó có cột ID được xác định là CI và nó có chỉ mục NCI với cột ID một lần nữa làm khóa chỉ mục và thêm 7 cột nữa.
SQLPRODDBA

Sau đó, Paul White dường như đã đưa ra câu trả lời chính xác, tuy nhiên tôi đặt câu hỏi liệu bạn có nên thay đổi bảng "cơ sở" từ một bảng cụm thành một đống. Hoặc thậm chí chia bảng lên tùy thuộc vào tần suất cập nhật các cột khác nhau, để giảm chi phí ghi nhật ký giao dịch.
Ian Ringrose

Câu trả lời:


26

Một chỉ mục không bao gồm có cùng khóa (s) * với chỉ mục được nhóm, vẫn có thể hữu ích, bởi vì chỉ mục không bao gồm thường sẽ nhỏ hơn và dày hơn. Hãy nhớ rằng, một chỉ mục được nhóm bao gồm tất cả dữ liệu liên tiếp, do đó, nó thường là chỉ mục rộng nhất (ít mật độ nhất) có thể.

* Các cột khóa giống nhau, trong cùng một chuỗi, được sắp xếp theo cùng một cách (asc / desc).

Đối với một tìm kiếm đơn lẻ (một tìm kiếm sử dụng một biến vị ngữ bằng một chỉ mục duy nhất), sự khác biệt chính là cơ hội lớn hơn của (các) trang chỉ mục cần thiết để tìm thấy bản ghi duy nhất đã có trong bộ nhớ. Tất cả mọi thứ đều bình đẳng, một chỉ mục không bao gồm 100 trang có cơ hội tốt hơn một chỉ mục được lưu trữ trên 10.000 trang.

Đối với bất kỳ loại tìm kiếm nào khác ngoại trừ một đơn, sẽ có một thành phần quét. Phần quét cũng sẽ được hưởng lợi từ mật độ lớn hơn của chỉ mục không bao gồm (nhiều hàng hơn trên mỗi trang). Ngay cả khi các trang phải đến từ bộ nhớ liên tục, đọc ít trang hơn sẽ nhanh hơn.

Bạn nên kiểm tra tài liệu hệ thống, hỏi người đã thêm chỉ mục và / hoặc tìm kiếm nhận xét mã để hiểu lý do tại sao chỉ mục này tồn tại. Bạn cũng cần kiểm tra các định nghĩa chỉ mục đầy đủ một cách cẩn thận, bao gồm nén và xem các tập lệnh bảo trì chỉ mục. Có thể có những lý do đặc biệt khác để có chỉ số không bao gồm (ví dụ: khả năng xây dựng lại trực tuyến).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.