Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chỉ mục Cột chính VS Cột bao gồm chỉ mục

Các cột chính của chỉ mục là một phần của cây b của chỉ mục. Các cột được bao gồm không.

Lấy hai chỉ mục:

CREATE INDEX index1 ON table1 (col1, col2, col3)
CREATE INDEX index2 ON table1 (col1) INCLUDE (col2, col3)

index1 phù hợp hơn cho loại truy vấn này:

SELECT * FROM table1 WHERE col1 = x AND col2 = y AND col3 = z

Trong khi index2 phù hợp hơn cho loại truy vấn này:

SELECT col2, col3 FROM table1 WHERE col1 = x

Trong truy vấn đầu tiên, index1 cung cấp một cơ chế để nhanh chóng xác định các hàng quan tâm. Truy vấn sẽ (có thể) thực thi dưới dạng tìm kiếm chỉ mục, theo sau là tra cứu dấu trang để truy xuất (các) hàng đầy đủ.

Trong truy vấn thứ hai, index2 hoạt động như một chỉ số bao trùm. SQL Server hoàn toàn không phải truy cập vào bảng cơ sở, vì chỉ mục cung cấp tất cả dữ liệu mà nó cần để đáp ứng truy vấn. index1 cũng có thể hoạt động như một chỉ mục bao trùm trong trường hợp này.

Nếu bạn muốn có một chỉ mục bao trùm, nhưng không muốn thêm tất cả các cột vào cây b vì bạn không tìm kiếm chúng hoặc không thể vì chúng không phải là một kiểu dữ liệu được phép (ví dụ:XML), hãy sử dụng Điều khoản INCLUDE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng kết quả của câu lệnh SQL select trong hàm dbo.fnSplit làm đầu vào

  2. Cách gọi hàm C # trong thủ tục được lưu trữ

  3. Trả về tất cả các khóa ngoại tham chiếu đến một bảng đã cho trong SQL Server

  4. Cách hạn chế người dùng mở khóa / trái phép xem các trang web trong ASP.NET

  5. Tính toán tùy chỉnh cho số tiền