同一邏輯查詢,參數化 (sp_executesql) 與非參數化 (字串拼接) 產生截然不同的執行計畫與效能表現。
CWB_NO = '31301379874',其他條件皆為 NULL。sp_executesql 傳遞 @CWB_NO 參數。'31301379874' 並將其他參數以 NULL 字面值嵌入 SQL 字串。OPTION (RECOMPILE) 讓參數化查詢亦能獲得字面值級估算。OPTIMIZE FOR (@CWB_NO = '31301379874')) 引導估算。參數化與計畫重用是雙面刃。理解最佳化器在「已知字面值」與「未知參數」下的估算差異,針對關鍵查詢採取重編譯或提示策略,才能兼顧安全與效能。