Clustered index là loại index từ đó những bạn dạng ghi vào bảng được sắp tới thứ từ bỏ theo ngôi trường index. Lúc bảng được chế tác clustered index thì bạn dạng thân nó trở nên một cây index, với các node lá đựng khóa là đầy đủ trường được index với cũng đồng thời chứa tất cả những trường còn sót lại của bảng. Vày những bản ghi chỉ rất có thể được thu xếp trên cây index theo một sản phẩm tự ổn định nên từng bảng chỉ có thể có buổi tối đa một clustered index. Chúng ta tạo clustered index như sau:

Khi bảng đã có khá nhiều clustered index thì những index không giống (nonclustered) sẽ sử dụng khóa của ngôi trường clustered index làm nhỏ trỏ nhằm trỏ về phiên bản ghi tương xứng (nếu bảng không tồn tại clustered index thì một quý hiếm RID nội bộ được sử dụng).

Bạn đang xem: Clustered index là gì

Bài Viết: Clustered index là gì

Clustered index không yên ổn cầu đề xuất duy tuyệt nhất (unique). Nhưng lại khi nó không duy nhất thì khóa index được gắn thêm thêm một quý hiếm 4-byte đột nhiên để bảo đảm những node index vẫn luôn là duy nhất. Mục đích của việc này là làm cho con trỏ trong những index khác luôn luôn trỏ mang đến đến duy nhất một phiên bản ghi, khi ấy con trỏ sẽ bao gồm cả khóa index + chuỗi 4 byte được gắn thêm thêm.

Việc đính thêm thêm do đó làm tăng form size của clustered index cũng tương tự những index khác, đề nghị trong đa số tình huống trong thực tế bạn đề nghị tạo clustered index là duy nhất. Thực tế, theo mang định một clustered index duy nhất sẽ được tạo lúc khai báo khóa chính.


Việc kiếm tìm kiếm theo trường tất cả clustered index về tối ưu hơn so cùng với non-clustered index vị nó bỏ qua mất được bước bookmark lookup (do toàn bộ những trường tài liệu đã có khá nhiều sẵn tại node index). Ta hãy đối chiếu hiệu năng của hai loại index trải qua 1 ví dụ: bảng Customer vốn đã có rất nhiều clustered index bên trên trường CustomerID; giờ đồng hồ ta hãy copy dữ liệu sang một bảng mới và chế tạo non-clustered index đến CustomerID; tiếp nối thực hiện và một câu lệnh trên hai bảng.

USE AdventureWorks GO SELECT * INTO Sales.Customer_NC FROM Sales.Customer GO CREATE INDEX Idx_CustomerID_NC ON Sales.Customer_NC ( CustomerID) GO — #1 SELECT CustomerID,CustomerType FROM Sales.Customer WHERE CustomerID = 27684 — #2 SELECT CustomerID,CustomerType FROM Sales.Customer_NC WHERE CustomerID = 27684


*

Như phương án tiến hành cho thấy, câu lệnh trước tiên (có clustered index) chỉ có kinh phí bằng một phần so cùng với câu lệnh lắp thêm hai (nonclustered index), bởi vì câu lệnh trang bị hai cần thêm làm việc bookmark lookup (RID lookup ngơi nghỉ trong hình). Bạn cũng có thể tưởng tượng clustered index là một trong covering index cùng với độ bao trùm là toàn thể những cột vào bảng, tuy vậy không chiếm phần thêm không khí lưu trữ riêng mang lại index.

Xem thêm: Ý Nghĩa Của Từ Delulu Là J, Ý Nghĩa Của Từ Delulu Là Gì

Cũng vì tài liệu được lưu tuy nhiên song cùng với node index cần những lệnh search kiếm theo khoảng luôn luôn được trợ giúp vì chưng clustered index. Quay trở lại hai bảng trong lấy một ví dụ trên:


SELECT CustomerID,CustomerType FROM Sales.Customer WHERE CustomerID BETWEEN 20000 với 30000 SELECT CustomerID,CustomerType FROM Sales.Customer_NC WHERE CustomerID BETWEEN 20000 với 30000


*

Hãy tạm bỏ lỡ dòng đề xuất (“Missing index…”) của SQL Server. Ta thấy là câu lệnh trước tiên được thực hiện bằng index seek, trong những lúc câu lệnh máy hai dẫn mang lại quét bảng (table scan) mặc dù trường phải tìm đã có rất nhiều index. Vì sao là do câu lệnh tìm kiếm theo khoảng như trên hay trả về nhiều bạn dạng ghi, nếu sử dụng index sẽ khởi tạo ra nhiều thao tác bookmark lookup (mỗi phiên bản ghi tìm được là một lượt lookup), dẫn đến kinh phí đầu tư tăng cao. Vào trường vừa lòng này nó còn quá quá kinh phí quét bảng. Vì thế bộ tối ưu hóa (Optimizer) khi review những cách thực hiện đã chọn cách thức quét bảng. Với clustered index thì thao tác nhảy thẳng mang lại từng node (index seek) luôn đủ để mang được kết quả; bởi index seek đang là về tối ưu nên không có phương án nào khác đề nghị xem xét.

Phiên bản cần sử dụng: toàn bộ những phiên bản

Những bài viết tương tự

Index góp Tăng tính năng Thực Hiện thế nào Tối Ưu Hóa Câu Lệnh bằng Covering Index Để dùng Được Index trong Điều Kiện search Kiếm Của Câu Lệnh

Thể Loại: chia sẻ Kiến Thức cộng Đồng


Bài Viết: Clustered Index Là Gì – Sql Việt Blog» Blog Archive » Clustered Index


Thể Loại: LÀ GÌ

Nguồn Blog là gì: https://romanhords.com Clustered Index Là Gì – Sql Việt Blog» Blog Archive » Clustered Index