close

 

 

20140624001  

 

 查詢條件

估計的

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 」。

 

以上資料,僅供參考。

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Jiang Ying-Fu 的頭像
    Jiang Ying-Fu

    Jiang Ying-Fu的部落格

    Jiang Ying-Fu 發表在 痞客邦 留言(0) 人氣()