2016-03-07 22 views
5

Tôi có câu hỏi cơ bản về Quét/Tìm kiếm Chỉ mục. Quét chỉ mục có hiệu quả khi có số lượng lớn các hàng cần tìm nạp. Đó là chi phí quét chỉ mục tỷ lệ nghịch với số hàng được trả về. Đó là ít hơn số hàng đắt hơn truy vấn trở nên vì nó phải quét tất cả các trang dẫn đến nhiều IO hơn.Tại sao chỉ mục tìm kiếm trở nên đắt hơn so với quét chỉ mục

Tôi đã tìm kiếm lý do tại sao tìm kiếm trở nên đắt hơn quét nhưng tôi không thể có lý do tại sao tìm kiếm trở nên đắt đỏ.

Điều tôi đang nhầm lẫn là tìm kiếm chỉ mục. Tại sao chỉ số tìm kiếm trở nên đắt đỏ với số hàng được trả về nhiều hơn. Tìm kiếm chỉ mục sẽ luôn nhanh hơn và hiệu quả hơn quét khi nó chạm trực tiếp vào các trang có chứa các hàng. Vì vậy, ngay cả với số lượng lớn các hàng trả về tìm kiếm chỉ mục luôn luôn có hiệu quả hơn so với quét chỉ mục. Nhưng điều này không xảy ra. Tôi muốn biết chính xác tại sao tại một số điểm tìm kiếm trở nên đắt tiền.

select id,name,col1,col2 
from TableA -- Will result in index scan. Table has 10000 rows with clustered index on ID column. Query has covering index. 

select id,name,col1,col2 
where ID between 1 and 10 
from TableA -- Optimizer Will use index Seek. 

Bây giờ tại sao truy vấn dưới đây trở nên đắt đỏ khi chỉ mục tìm kiếm được buộc vào -

select id,name,col1,col2 
from TableA with (forceseek) 
+0

có thể [this] (http://blog.sqlauthority.com/2007/03/30/sql-server-index-seek-vs-index-scan-table-scan/) giúp !!! – Praveen

+0

Chi phí đủ điều kiện tìm kiếm có thể là nguyên nhân – Ian

+0

Điều gì có trong chỉ mục? Chỉ là ID? Nó là một chỉ số nhóm? Nếu không thì tra cứu khóa cần thiết để có được các cột khác sẽ là lý do cho việc đạt hiệu suất. – strickt01

Trả lời

2

Lý do tại sao chỉ số Clustered Seek là tốn kém hơn so với chỉ số quét là vì Index tìm kiếm bắt đầu đọc các cây B đúng từ các nút gốc đến các nút lá. Điều này liên quan đến việc đọc chỉ mục và các trang bên trong các nút Leaf. Do đó dẫn đến IO nhiều hơn. Vì vậy, khi chọn lọc là ít trình tối ưu hóa, hãy chọn quét chỉ mục thay vì tìm kiếm chỉ mục. Tìm kiếm chỉ tốt hơn khi các bản ghi được trả về không quá 2 đến 3%.

Các vấn đề liên quan