我可能听起来很愚蠢但是如果我指定多个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'
答案 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}}上的索引访问权限进行第二次查询扫描,这会减慢查询速度。
如果你问的是“复杂查询是否慢于简单”,那么答案就是“与查询需要做的其他事情相比,解析时间通常可以忽略不计”