2015-12-27 38 views
0

我有這樣一個表:在WHERE子句中增加條件會提高搜索速度嗎?

// mytable 
+----+-------+---------+ 
| id | name | code | 
+----+-------+---------+ 
| 1 | jack | 1  | 
| 2 | acton | 1  | 
| 3 | aiken | 1  | 
| 4 | peter | null | 
| 5 | ash | null | 
| 6 | fabia | 2  | 
| 7 | ubon | null | 
| 8 | taavi | null | 
| 9 | wade | 2  | 
| 10 | ian | 1  | 
+----+-------+---------+ 

我要選擇這行的id是4。這裏是我的查詢:

select * from mytable where id = 4 

而且我知道,行codenull。現在我想知道,如果我加這個... and code = null會提高搜索速度嗎?

+0

您提出的更改將返回零行。使用'is null'。桌上有哪些索引?假設一個唯一的id索引,這個額外的檢查可能會使事情略微減慢。 –

+1

@Shafizadeh如果id是唯一的,並且代碼被索引,則添加「...和code爲null」不會有任何區別,只會使用id索引 – fthiella

回答

1

如果添加:

and code = null 

,那麼你不會得到任何行返回,因爲= null總是返回null。並且where會過濾掉其值不正確的行。

相反,你wnat:

and code is null 

據推測,id上有一個索引(所有的主鍵有一個索引)。如果是這樣,SQL引擎在獲取行後可能會再做一次比較,以確保code與條件匹配。鑑於所有其他獲取數據的工作,這是非常非常微不足道的。包括附加條件很可能對性能沒有明顯的影響。

+0

我明白了。 tnx :-) +1 – Shafizadeh