改寫 AP 時注意到 TSQL 上有使用到 LIKE _ 萬用字元,傳入參數會像是 A_____12345,所以好奇去觀察統計資訊和執行計畫,在執行計畫中注意到神奇的 operator
該 operator 竟然是 nested loop + nonclustered index seek 讀取全部 Table 資料後,卻只輸出一筆資料
仔細閱讀這 12 行 TSQL 和執行計畫後發現
- 隱含轉換:因為是 ORM 產生 TSQL 語法,沒有注意到 Table 欄位是 char,但傳入參數是 nvarchar 造成隱含轉換,四個條就有三個是隱含轉換
- 違反 SARG 原則,使用反向條件:明明條件可以寫成 [欄位 = '未結案']就好,卻要寫[欄位 <> '結案'],資料就[結案]和[未結案]這兩個狀態而已啊
修正上述兩點後,執行計畫就恢復正常
該案例只觀察統計資訊的話,大概不會想要花時間 turning,其實數據都還蠻低的






![[C#] SpliterContainer](https://live.staticflickr.com/65535/51205437599_2a110251d1.jpg)
![[C#] TextBox 的 Enter 鍵執行](https://live.staticflickr.com/65535/51199501017_a7837b5114_m.jpg)
![[C#] ToolTip](https://live.staticflickr.com/65535/51196962566_5c26841d29_n.jpg)
![[SQL] Foreign Key - Delete Cascade 執行計畫-1](https://live.staticflickr.com/65535/51192183567_e985c6fcfb_z.jpg)
![[SQL] Foreign Key - Delete Cascade 執行計畫-2](https://live.staticflickr.com/65535/51192181152_cf69228b9f_z.jpg)
![[SQL] DeadLock 解析工具](https://live.staticflickr.com/65535/51177153677_9b399ae3a4_z.jpg)
![[SQL] 本機伺服器-1](https://live.staticflickr.com/65535/51164040550_bbb9e38120.jpg)
![[SQL] 本機伺服器-2](https://live.staticflickr.com/65535/51162935701_b5c222433a_z.jpg)
![[SQL] 遺失索引案例-1](https://live.staticflickr.com/65535/51158826546_caf0e8b4f4_z.jpg)
![[SQL] SQL Agent 10016 錯誤-1](https://live.staticflickr.com/65535/51130957583_bd39cb5c70_z.jpg)
![[SQL] SQL Agent 10016 錯誤-2](https://live.staticflickr.com/65535/51131519979_15501ba52b.jpg)
![[SQL] SQL Agent 10016 錯誤-3](https://live.staticflickr.com/65535/51130953808_aaf68a7f63_z.jpg)
![[SQL] SQL Agent 10016 錯誤-4](https://live.staticflickr.com/65535/51130067112_77c98edebc.jpg)