MySql WHERE查询速度

时间:2013-09-19 17:41:46

标签: mysql performance where

我可能听起来很愚蠢但是如果我指定多个WHERE子句,它会加速mysql查询还是减慢它?

哪一个会更快?

示例1:

SELECT id FROM table WHERE username='user'

示例2:

SELECT id FROM table WHERE username='user' AND country='US' AND email='email@gmail.com'

3 个答案:

答案 0 :(得分:1)

嗯,这完全取决于您要搜索的列是否已定义索引。

在示例1中,username必须具有索引以获得更好的性能。

ALTER TABLE tableName INDEX (username)

在示例二中,三列也必须具有索引

ALTER TABLE tableName INDEX (username, country, email)

答案 1 :(得分:0)

这取决于一些事情,比如您的表被编入索引,但限制结果集应该几乎总是比返回所有结果更快。和其他一切一样,基准测试然后决定。

答案 2 :(得分:0)

通常第二个会更快,因为它会返回第一个结果集的子集。

但是,对于MySQL上的country上的索引访问或完整表格,email可能会错误地选择username或{{1}}上的索引访问权限进行第二次查询扫描,这会减慢查询速度。

如果你问的是“复杂查询是否慢于简单”,那么答案就是“与查询需要做的其他事情相比,解析时间通常可以忽略不计”