WHERE子句中增加条件会增加搜索速度吗?

时间:2015-12-27 17:03:00

标签: mysql performance search

我有一张这样的表:

// 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

此外,我知道该行的code值为null。现在我想知道,如果我添加这个... and code = null会提高搜索速度吗?

1 个答案:

答案 0 :(得分:1)

如果你添加:

and code = null

然后您将不会返回任何行,因为= null始终返回nullwhere过滤掉值不为真的行。

相反,你知道了:

and code is null

据推测,id上有一个索引(所有主键都有一个索引)。如果是这样,SQL引擎可能会在获取行之后再进行一次比较,以确保code与条件匹配。鉴于获取数据的所有其他工作,这是非常非常微不足道的。包括附加条件在内,很可能对绩效没有明显影响。