,這是什麼情況下最優化的解決方案:TSQL優化 - WHERE子句不LIKE
在我的查詢的WHERE子句是這樣的:
WHERE columnX LIKE @Account + '%'
我用 '%',因爲@Account可能'',在這種情況下,我想獲得所有的值。在所有其他情況下,我可以使用equals(=)。
該溶液沒有被優化,因爲我有columnX指數和我想用,因爲其等於(=)。另外,由於性能原因,OR方案是不可接受的。
你有其他建議嗎?我在WHERE子句中用CASE試過,但沒有找到優化的好解決方案。我們的兼容級別是80,因此不能使用更新的語法。 (不要問爲什麼:-))
TnX提前!
維迪奇
爲什麼不能通過if(@Account ='')語句將它分成兩個部分(查詢)?所以如果@ Account =''你根本不需要WHERE子句。 – Kaf
這是解決方案之一,但它看起來像代碼冗餘和性能不太好。另外,因爲這段代碼在程序中,所以我需要在兩種不同的情況下添加WITH RECOMPILE,因爲執行計劃不同。 –
在構建查詢的代碼中,測試帳戶是空白還是空白,然後重定向以運行查詢,該查詢說明獲取所有行。否則,請使用where columnX = Account。 –