Tôi có hai truy vấn tương tự tạo cùng một kế hoạch truy vấn, ngoại trừ một kế hoạch truy vấn thực hiện Quét chỉ mục cụm 1316 lần, trong khi truy vấn kia thực hiện 1 lần.
Sự khác biệt duy nhất giữa hai truy vấn là tiêu chí ngày khác nhau. Truy vấn chạy dài thực sự thu hẹp tiêu chí ngày và lấy lại ít dữ liệu hơn.
Tôi đã xác định được một số chỉ mục sẽ trợ giúp cho cả hai truy vấn, nhưng tôi chỉ muốn hiểu tại sao toán tử Clustered Index Scan lại thực thi 1316 lần trên một truy vấn gần giống như truy vấn mà nó thực hiện 1 lần.
Tôi đã kiểm tra số liệu thống kê về PK đang được quét và chúng tương đối cập nhật.
Truy vấn gốc:
select distinct FIR_Incident.IncidentID
from FIR_Incident
left join (
select incident_id as exported_incident_id
from postnfirssummary
) exported_incidents on exported_incidents.exported_incident_id = fir_incident.incidentid
where FI_IncidentDate between '2011-06-01 00:00:00.000' and '2011-07-01 00:00:00.000'
and exported_incidents.exported_incident_id is not null
Tạo kế hoạch này:
Sau khi thu hẹp tiêu chí phạm vi ngày:
select distinct FIR_Incident.IncidentID
from FIR_Incident
left join (
select incident_id as exported_incident_id
from postnfirssummary
) exported_incidents on exported_incidents.exported_incident_id = fir_incident.incidentid
where FI_IncidentDate between '2011-07-01 00:00:00.000' and '2011-07-02 00:00:00.000'
and exported_incidents.exported_incident_id is not null
Tạo kế hoạch này:
FI_IncidentDate between '2011-07-01 00:00:00.000' and '2011-07-02 00:00:00.000'
tiêu chí và kể từ đó đã có một số lượng chèn không tương xứng trong phạm vi đó. Nó ước tính chỉ cần 1,07 lần thực hiện cho phạm vi ngày đó. Không phải là 1.316 xảy ra trong thực tế.