星期二, 6月 01, 2021

[SQL] Like - sp_executesql

在 [SQL] Like - 萬用字元 整理完 TSQL 後,讓效能回歸正常情況,原本有期待執行計畫起始 operator 會從 [未結案非叢集索引] 開始跑,沒想到還是從 [固定掃描 (Constant Scan)] 開始。

找些 TSQL 來驗證後發現,sp_executesql + like 似乎都會從 [固定掃描 (Constant Scan)] 開始跑

TSQL Like 條件直接執行

從 [未結案非叢集索引] 開始跑,變數沒有參數化,[LIKE 'B_____12345%'] 資料被轉成 [大於等於 B 且小於 C]

[SQL] Like _ 萬用字元 - sp_executesql-2

sp_executesql + like

sp_executesql 參數化變數
  • 1 號 operator:有 LikeRangeStart、LikeRangeEnd、LikeRangeInfo 出現
  • 2 號 operator:透過 Nested Loops 去找 [未結案非叢集索引]
  • 3 號 operator:傳進的變數都參數化
[SQL] Like _ 萬用字元 - sp_executesql-1

沒有留言:

張貼留言