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

Khi bảng đã có nhiều clustered index thì các index khác (nonclustered) sẽ sử dụng khóa của ngôi trường clustered index làm con trỏ nhằm trỏ về bạn dạng ghi tương ứng (nếu bảng không có clustered index thì một giá trị 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 im cầu buộc phải duy tốt nhất (unique). Tuy vậy khi nó không tuyệt nhất thì khóa index được lắp thêm một cực hiếm 4-byte hốt nhiên để bảo đảm những node index vẫn là duy nhất. Mục tiêu của bài toán này là khiến cho con trỏ trong những index khác luôn luôn trỏ mang đến đến độc nhất một phiên bản ghi, khi đó con trỏ sẽ kể cả khóa index + chuỗi 4 byte được đính thêm thêm.

Việc đính thêm thêm vì vậy làm tăng size của clustered index cũng giống như những index khác, đề xuất trong đa phần tình huống trong thực tế bạn yêu cầu tạo clustered index là duy nhất. Thực tế, theo mặc định một clustered index duy nhất sẽ được tạo khi khai báo khóa chính.


Việc tra cứu kiếm theo trường có clustered index buổi tối ưu rộng so với non-clustered index vì nó bỏ qua mất được cách bookmark lookup (do tất cả những trường tài liệu đã có nhiều sẵn trên node index). Ta hãy so sánh hiệu năng của hai các loại index trải qua 1 ví dụ: bảng Customer vốn đã có tương đối nhiều clustered index trên trường CustomerID; tiếng ta hãy copy dữ liệu sang một bảng mới và sinh sản non-clustered index mang đến CustomerID; tiếp đến thực hiện cùng một câu lệnh trên nhị 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 thực thi cho thấy, câu lệnh trước tiên (có clustered index) chỉ có kinh phí bằng một phần hai so với câu lệnh thiết bị hai (nonclustered index), vì chưng câu lệnh lắp thêm hai buộc phải thêm làm việc bookmark lookup (RID lookup sống trong hình). Bạn cũng có thể tưởng tượng clustered index là 1 covering index với độ che phủ là toàn cục những cột vào bảng, mà lại không chiếm thêm không khí lưu trữ riêng mang đến index.

Xem thêm: Các Loại Quân Trong Đế Chế Mạnh Nhất Đời 4 Tạo Nên Sự Đột Biến Trong Aoe I

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


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


*

Hãy tạm làm lơ dòng khuyến cáo (“Missing index…”) của SQL Server. Ta thấy là câu lệnh thứ nhất được tiến hành bằng index seek, trong khi câu lệnh thứ hai dẫn đến quét bảng (table scan) tuy vậy trường cần tìm đã có tương đối nhiều index. Tại sao là bởi câu lệnh search kiếm theo khoảng tầm như trên thường trả về nhiều phiên bản ghi, nếu dùng index sẽ tạo nên ra nhiều thao tác làm việc bookmark lookup (mỗi bản ghi tìm kiếm được là một đợt lookup), dẫn đến ngân sách đầu tư tăng cao. Vào trường hợp này nó còn vượt quá kinh phí đầu tư quét bảng. Vì thế bộ về tối ưu hóa (Optimizer) khi đánh giá những phương án đã chọn phương thức quét bảng. Cùng với clustered index thì thao tác làm việc nhảy thẳng đến từng node (index seek) luôn đủ để đưa được kết quả; vị index seek đang là buổi tối ưu nên không tồn tại phương án như thế 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 nội dung bài viết tương tự

Index góp Tăng tính năng Thực Hiện ra làm sao Tối Ưu Hóa Câu Lệnh bởi Covering Index Để cần sử dụng Được Index trong Điều Kiện tìm Kiếm Của Câu Lệnh

Thể Loại: share 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://diyxaqaw.com Clustered Index Là Gì – Sql Việt Blog» Blog Archive » Clustered Index