Chỉ số cụm là gì?


15

Tôi cần một lời giải thích ngắn về chỉ số cụm.

  • Một chỉ số cụm là gì?
  • Thực hành tốt nhất để sử dụng chỉ mục cụm là gì?

Đó là một ý tưởng tốt để sử dụng một ngày trong một chỉ mục được nhóm vì dữ liệu mới luôn được thêm vào cuối bảng.
Ralph Winters

1
Có thể, nhưng không phải lúc nào.
mrdenny

@mrdenny - bạn có thể nói rõ hơn khi điều này không được như vậy không?
Ralph Winters

1
Nếu các hàng đang được nhập ra khỏi trật tự. Nếu bảng thường được truy vấn bởi khóa chính. Nếu khóa chính là INT (hoặc nhỏ hơn) và sẽ có rất nhiều chỉ mục không được phân cụm trên bảng so với khóa cụm datetime sẽ lớn hơn và kém hiệu quả hơn. Nếu bảng sẽ không bao giờ được truy vấn bởi cột ngày hơn là sử dụng vì khóa phân cụm sẽ không có giá trị vì chỉ các chỉ mục không được phân cụm sẽ được sử dụng.
mrdenny

@mrdenny: cũng nếu bảng không có cột ngày (trường hợp con của trường hợp cuối cùng của bạn :)
ypercubeᵀᴹ

Câu trả lời:


15

Nói một cách đơn giản ...

Một thư mục điện thoại: dữ liệu là chỉ mục / chỉ mục là dữ liệu. Để tìm kiếm bạn, tôi sẽ bắt đầu với Rezaei, Amir chẳng hạn. Không cần tra cứu bên ngoài.

Về mặt cơ sở dữ liệu:

Dữ liệu bảng và chỉ mục được nhóm là một và giống nhau (trong SQL Server, cũng là InnoDB, Oracle IOT)

Thực hành tốt nhất là hẹp, số, tăng nghiêm ngặt (nghĩ cột IDENTITY hoặc Autonumber). Các kiểu dữ liệu như GUID không phải là ý kiến ​​hay

Liên kết để đọc (để tránh làm đầy câu trả lời này)

Chỉnh sửa, để giải thích đầy đủ các đề xuất thực hành tốt nhất của tôi, hãy theo liên kết trong nhận xét của Eric Humphrey: Queen of Indexing: Kimberly Tripp


3
Bạn cũng sẽ muốn blog của Kimberly Tripp: sqlskills.com/BLOGS/KIMBERLY/carget/Clustered-Index.aspx
Eric Humphrey - lotahelp

1
Và đó là vấn đề với việc áp dụng "thực tiễn tốt nhất" không có ngữ cảnh. Ví dụ: nếu tiêu chí tìm kiếm chính cho bảng thường được tìm kiếm lớn là phạm vi ngày, vị trí tốt nhất của bạn cho chỉ mục được nhóm là ngày được tìm kiếm KHÔNG phải là khóa chính. Để nói bảng và chỉ mục được nhóm là một và giống nhau là quá đơn giản. Dữ liệu thực sự được lưu trữ theo thứ tự được chỉ định bởi chỉ mục được nhóm. Trong số những thứ khác, điều này có nghĩa là các chỉ mục được nhóm đặc biệt hữu ích cho các tìm kiếm phạm vi trả về tập dữ liệu đầy đủ.
Russell Steen

2
@Russell Steen: 1. Tôi đã bao gồm các liên kết 2. OP phải hỏi, xem xét mức độ tôi đưa ra câu trả lời này ở mức 3. Eric Humphrey cung cấp một liên kết tạo. Chúng ta có thể trải qua từng trường hợp những gì mà những người có kinh nghiệm hơn chúng ta biết và hiểu, nhưng chúng ta có ở đây để giúp giáo dục hay áp đảo ...?
gbn

Tôi nghe những gì bạn nói. Vấn đề không nằm ở câu trả lời của bạn, mà thực tế là những người ít kinh nghiệm hơn bạn chạy quanh trích dẫn và áp dụng một cái gì đó bởi vì đó là "cách thực hành tốt nhất" mà không hiểu cách sử dụng và bối cảnh mà cách thực hành tốt nhất được viết cho - Tôi lập luận rằng có, chúng tôi ở đây để giáo dục và trích dẫn thực tiễn tốt nhất mà không cung cấp thêm ngữ cảnh trực tiếp trong bài viết không làm tốt công việc đó.
Russell Steen

2
Oh, chỉ cần chú ý các SQL-Serverthẻ, bỏ qua.
ypercubeᵀᴹ

3

Đó là một chỉ mục trên chính dữ liệu sao cho các bản ghi được sắp xếp vật lý theo trường bạn có chỉ mục được nhóm. Đây là lý do tại sao bạn chỉ có thể có một Chỉ số cụm cho mỗi bảng.

Non Clustered Index không nhanh như tra cứu nhưng bạn có thể có nhiều loại chỉ mục này trên một bảng.


3
Các chỉ mục không được phân cụm có thể hiệu quả đối với việc tra cứu, nếu chỉ mục không được phân cụm đang bao trùm cho việc tra cứu được đề cập.
Russell Steen

@Russell Không có cách nào có thể nhanh hơn vì chỉ mục đã buộc thứ tự sắp xếp thực tế của dữ liệu. Không có cách nào đơn giản / nhanh hơn cho SQL hoặc bất kỳ RDBMS nào để tìm thông tin cần thiết.
kacalacco

4
Tôi không nói nhanh hơn. Một chỉ mục che phủ có tất cả dữ liệu được yêu cầu trong phần chọn trong chỉ mục - IN ORDER, trên một vị trí riêng biệt trên đĩa. Vì vậy, một lựa chọn đối với một chỉ số bao phủ phù hợp không bao giờ chạm vào bảng.
Russell Steen

2
Một NCI bao trùm có thể sẽ nhỏ hơn có nghĩa là ít trang hơn để đọc và nhanh hơn.
Martin Smith

Lý do chỉ có một chỉ mục được nhóm trên một bảng không phải là sắp xếp vật lý, các trang Chỉ mục luôn được sắp xếp hợp lý và việc phân bổ các trang liền kề không được đảm bảo. Bạn chỉ có thể có một Chỉ mục được nhóm trên mỗi bảng vì Chỉ mục được nhóm là chính bảng đó và các chỉ mục Không được nhóm là các bản sao của bảng với các cột bắt buộc.
Manoj Pandey
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.