2016-06-13 55 views
0

對於給定的查詢MySQL的性能,與LIKE「%%」

select * from contacts where name like "%$name%" 

是否MySQL的優化查詢,以排除條件時,變量$name是空的?

當$名稱爲空字符串,將查詢將被

select * from contacts 

select * from contacts where name like "%%" 
+0

答案是否定的。 MySQL將返回所有記錄 –

+3

不,請考慮NULL和不帶WHERE子句的NULL名稱的行爲。 –

+0

讓人感覺Alex。我之前沒有想到NULL。 – sushil

回答

1

正如Alex K在評論中提到的,MySQL不會做任何事情來優化類似的查詢。

如果您的行中有空值,查詢將不會返回結果集中的那些行,這說明每行都有一個檢查。 建議如果搜索值爲空,最好對代碼進行檢查並跳過類似子句。

-1

沒有執行,

使用PHP條件完全跳過查詢中$ name爲空的事件。

+0

對於任何正在尋找答案的人,請注意我的回答是正確的,並且會幫助你(下注是正確的)。 –