-1
我正在寫一個查詢,它將通過我的程序在數據庫上執行。在該查詢中,我使用從客戶端發送的值添加了where
子句。在某些值不存在的情況下,我將它留空(即它看起來像select * from tablename where columname like '%%' and columname1 like '%%'
)。這是否會導致任何性能問題?添加where子句(如'%%')會導致任何性能問題?
我正在寫一個查詢,它將通過我的程序在數據庫上執行。在該查詢中,我使用從客戶端發送的值添加了where
子句。在某些值不存在的情況下,我將它留空(即它看起來像select * from tablename where columname like '%%' and columname1 like '%%'
)。這是否會導致任何性能問題?添加where子句(如'%%')會導致任何性能問題?
回答這個問題的最好方法是通過測試。您應該嘗試使用和不使用條件的查詢。
添加條件到where
子句可以至少在三個方面影響性能:
如果查詢很簡單:
select t.*
from t
where col like '%%';
然後前兩點是不相關的。第三個有點相關。問題是數據庫是否「優化」了like
(因爲該模式是通用的)。我不認爲它確實如此;它將不得不用col is not null
來代替它。
使用like
有一些開銷。我會推測like
的開銷遠低於首先閱讀表的開銷。所以,雖然它可能會影響性能,但在一個簡單的情況下,效果會相對較小。
請用你正在使用的數據庫標記你的問題。 –
根據條件檢查內容並構建查詢會很複雜嗎? – AxelH