我可能听起来很愚蠢,但如果我指定多个 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'
我可能听起来很愚蠢,但如果我指定多个 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'
好吧,这完全取决于您正在搜索的列是否定义了索引。
在示例一中,username
必须有一个索引才能有更好的性能。
ALTER TABLE tableName INDEX (username)
在示例二中,三列也必须有一个索引,
ALTER TABLE tableName INDEX (username, country, email)
这取决于一些事情,比如你的表是由什么索引的,但是限制你的结果集应该几乎总是比返回所有结果更快。与其他一切一样,对两者进行基准测试然后再决定。
通常第二个会更快,因为它会返回第一个结果集的子集。
但是,可能MySQL
会错误地偏爱第二个查询的索引访问而不是索引访问country
或全表扫描,这会减慢查询速度。email
username
如果您要问“复杂查询是否比简单查询慢”,那么答案将是“与查询需要做的其他事情相比,解析时间通常可以忽略不计”