Nên thứ tự của cột trong mệnh đề ở đâu giống với thứ tự chỉ mục?


8

Tôi đã đọc sử dụng này-the-index-luke.com để giải thích chi tiết về cách các chỉ mục hoạt động. Một trong những điều mà người này đã lặp lại rằng thứ tự của các chỉ mục rất quan trọng và để làm cho truy vấn nhanh, các cột mệnh đề where phải giống như trong chỉ mục. Hôm nay, tôi chỉ chứng thực lý thuyết này và tạo một bảng (id int, name nvarchar (100)) trên SQL Server 2008. Tôi đã chèn khoảng 5000 hàng vào đó và tạo một chỉ mục create index abc on test (name, id )

và sa thải truy vấn

select ID, name 
from test 
where ID = 10
and name = '10'

Tôi đã mong đợi một lần quét toàn bộ bảng được theo sau bởi một lựa chọn trong kế hoạch truy vấn nhưng điều ngạc nhiên là đầu ra của kế hoạch là một quét chỉ mục được chọn bởi chọn. Kế hoạch truy vấn

Vì vậy, câu hỏi của tôi là thứ tự các cột trong mệnh đề Where quan trọng hay SQL Server sắp xếp lại chúng theo định nghĩa chỉ mục?

Cảm ơn !!


3
Không kế hoạch thực hiện từ bạn kiểm tra trả lời câu hỏi?
ypercubeᵀᴹ

Đúng !! Nhưng tôi muốn một số ý kiến ​​chuyên gia và trong trường hợp điều này có thể thất bại. Cảm ơn !!
Egalitarian

1
Câu hỏi tương tự cho MySQL: Trong MySQL, thứ tự của các cột trong mệnh đề WHERE có ảnh hưởng đến hiệu năng truy vấn không? Trình tối ưu hóa của SQL-Server cao hơn một vài cấp so với MySQL.
ypercubeᵀᴹ

Câu trả lời:


13

Vì vậy, câu hỏi của tôi là thứ tự các cột trong mệnh đề Where quan trọng

Không. Thứ tự các cột trong WHEREmệnh đề hoàn toàn không quan trọng.


10

Trước hết, DROPcâu lệnh trong cửa sổ truy vấn rõ ràng không được thực thi, nhưng để giải thích, tôi sẽ cố gắng giải quyết những gì bạn yêu cầu.


Hãy nghĩ về các chỉ mục giống như một cuốn sách điện thoại: các mục được sắp xếp theo Họ, sau đó theo Tên. (Đây là thứ tự khóa chỉ mục .)

Nếu tôi yêu cầu bạn tìm tất cả các số điện thoại của những người có họ "Davis", bạn sẽ lật sang trang thích hợp và đọc các số đó. (Đây là một tìm kiếm chỉ mục .)

Nếu tôi yêu cầu bạn tìm tất cả các số điện thoại của những người có tên "Janice", bạn sẽ phải xem mọi trang để tìm tất cả số đó. (Đây là quét chỉ mục .)

Nếu tôi cung cấp cho bạn cả tên và họ, bạn sẽ có thể tìm thấy mục đó rất nhanh, giống như ví dụ đầu tiên, vì rõ ràng bạn sẽ sử dụng tên cuối cùng để tìm đúng trang, sau đó là tên đầu tiên tìm mục chính xác Sẽ không có vấn đề gì khi tôi cung cấp cho bạn thông tin, miễn là tôi đã cung cấp cho bạn cả tên và họ.

Trình tối ưu hóa truy vấn SQL Server hoạt động theo cùng một cách. Dựa trên thứ tự khóa chỉ mục, nó tự động xác định cách hiệu quả nhất để truy xuất dữ liệu bạn đã yêu cầu, bất kể thứ tự của các điều kiện trong WHEREmệnh đề.


Giải thích tuyệt vời về quét chỉ mục và tìm kiếm chỉ mục.
Neelam

0

Thứ tự của các cột trên vấn đề chỉ mục nhưng không theo thứ tự các giá trị anded trên wheremệnh đề.

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.