我有一张这样的表:
// 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
会提高搜索速度吗?
答案 0 :(得分:1)
如果你添加:
and code = null
然后您将不会返回任何行,因为= null
始终返回null
。 where
过滤掉值不为真的行。
相反,你知道了:
and code is null
据推测,id
上有一个索引(所有主键都有一个索引)。如果是这样,SQL引擎可能会在获取行之后再进行一次比较,以确保code
与条件匹配。鉴于获取数据的所有其他工作,这是非常非常微不足道的。包括附加条件在内,很可能对绩效没有明显影响。