close
查詢條件 |
估計的 I/O成本 |
估計的 CPU成本 |
估計的 運算子成本 |
疑問點 |
id between '10' and '19' | 0.003125 | 0.0001581 | 0.0032831 | Convert_IMPLICIT |
id >= '10' and id <= '19' | 0.003125 | 0.0001581 | 0.0032831 | Convert_IMPLICIT |
id > '9' and id < '20' | 2.382380 | 0.6255533 | 2.4449400 | (N'9') |
第三個查詢少一個「=」,理論上應該是少一個比對運算,應該會較快,且花費的成本應該是最低的;但在這個範例中,卻是最慢,且花費的成本也是最高的。
那問題是出現在哪? 「 Convert_IMPLICIT(NVarchar(4000),[@1],0) 」
Convert_IMPLICIT 是哪冒出來的?為什麼會有這個?
Convert_IMPLICIT 是 SQL SERVER 針對 Where 解析後所做的搜尋述詞,會將 Where 語法做一些適當的調整、優化。
但為什麼會出現?
因為欄位的屬性是設定成「NVarChar」,所以在查詢時,會將語法做調整優化。
那為什麼只是將「=」移除,就不適用 Convert_IMPLICIT ?
或許是 SQL Server 解析後認為複雜度不高,所以就沒做吧,但是不是這樣,還得再去找資料、測試看看了。
補充:
第一和第二的估計資料列數目,永遠為 「 1 」。
第三個的估計資料列數目,為「 56723.9 」。
以上資料,僅供參考。
全站熱搜
留言列表