Trong kế hoạch thực thi SQL Server, sự khác biệt giữa Quét chỉ mục và Tìm kiếm chỉ mục là gì
Tôi đang sử dụng SQL Server 2005.
Câu trả lời:
Quét chỉ mục là nơi máy chủ SQL đọc toàn bộ chỉ mục để tìm kiếm các kết quả phù hợp - thời gian diễn ra tỷ lệ thuận với kích thước của chỉ mục.
Tìm kiếm chỉ mục là nơi máy chủ SQL sử dụng cấu trúc b-tree của chỉ mục để tìm kiếm trực tiếp các bản ghi phù hợp (xem http://mattfleming.com/node/192 để biết ý tưởng về cách hoạt động của điều này) - thời gian thực hiện chỉ tương ứng với số lượng bản ghi phù hợp.
Quy tắc cơ bản cần tuân theo là Lượt tìm là xấu, Lượt tìm là tốt.
Quét chỉ mục
Khi SQL Server thực hiện quét, nó sẽ tải đối tượng mà nó muốn đọc từ đĩa vào bộ nhớ, sau đó đọc qua đối tượng đó từ trên xuống dưới để tìm kiếm các bản ghi mà nó cần.
Tìm kiếm chỉ mục
Khi SQL Server thực hiện tìm kiếm, nó biết vị trí trong chỉ mục mà dữ liệu sẽ đến, vì vậy nó tải lên chỉ mục từ đĩa, đi thẳng đến phần của chỉ mục mà nó cần và đọc đến nơi kết thúc dữ liệu mà nó cần. . Đây rõ ràng là một hoạt động hiệu quả hơn nhiều so với quét, vì SQL đã biết dữ liệu mà nó đang tìm kiếm nằm ở đâu.
Làm cách nào tôi có thể sửa đổi Kế hoạch thực thi để sử dụng Tìm kiếm thay vì Quét?
Khi SQL Server đang tìm kiếm dữ liệu của bạn có lẽ một trong những điều lớn nhất khiến SQL Server chuyển từ tìm kiếm sang quét là khi một số cột bạn đang tìm kiếm không được bao gồm trong chỉ mục bạn muốn nó sử dụng. Thông thường, điều này sẽ khiến Máy chủ SQL quay trở lại thực hiện quét chỉ mục theo cụm, vì chỉ mục được phân cụm chứa tất cả các cột trong bảng. Đây là một trong những lý do lớn nhất (ít nhất là theo ý kiến của tôi) mà giờ đây chúng ta có khả năng BAO GỒM các cột trong một chỉ mục mà không cần thêm các cột đó vào các cột được lập chỉ mục của chỉ mục. Bằng cách bao gồm các cột bổ sung trong chỉ mục, chúng tôi tăng kích thước của chỉ mục, nhưng chúng tôi cho phép SQL Server đọc chỉ mục, mà không cần phải quay lại chỉ mục được phân nhóm hoặc tự nó đến bảng để nhận các giá trị này.
Người giới thiệu
Để biết thông tin về chi tiết cụ thể của từng toán tử này trong kế hoạch Thực thi SQL Server, hãy xem ....
Câu trả lời ngắn:
Quét chỉ mục: Chạm vào tất cả các hàng trừ các cột nhất định.
Tìm kiếm chỉ mục: Chạm vào các hàng nhất định và các cột nhất định.
Quét chỉ mục xảy ra khi định nghĩa chỉ mục không thể tìm thấy trên một hàng để đáp ứng các vị từ tìm kiếm. Trong trường hợp này, SQL Server phải quét nhiều trang để tìm một dải hàng thỏa mãn các vị từ tìm kiếm.
Trong trường hợp Tìm kiếm chỉ mục, SQL Server tìm một hàng duy nhất phù hợp với các vị từ tìm kiếm bằng cách sử dụng định nghĩa chỉ mục .
Tìm kiếm chỉ mục tốt hơn và hiệu quả hơn.
Quét chạm vào mọi hàng trong bảng ngay cả khi bạn đang theo dõi nó hay không
Tìm kiếm chỉ xem xét các hàng mà bạn đang tìm kiếm.
Tìm kiếm luôn tốt hơn so với quét vì chúng hiệu quả hơn trong cách tra cứu dữ liệu.
Một lời giải thích tốt có thể được tìm thấy ở đây