假设查询多个条件,
select AA.*,BB.* from AA left join BB on AA.key=BB.key
where AA.key='red' or AA.key='green' or AA.key='blue' or AA.key='pink'
与
比较select AA.*,BB.* from AA left join BB on AA.key=BB.key
where AA.key IN ['red','green',blue',pink']
在MYSQL中,上面两个选项中的任何一个都比另一个快吗? 我知道使用' IN"更漂亮,但速度不同吗? (这些表的索引在'键')
我看到了this帖子,但没有关于速度的参考。
答案 0 :(得分:0)
改进它的最佳方法是在另一个带索引的表中使用所需的键,并加入它:
Select AA.*, BB.*
From AA
Join KEYS using (key)
Left Join BB using (key)
MySQL将选择关于KEYS大小的最佳方法,并使其几乎是即时的。
一般来说,避免使用OR语句,它们往往会在联合中翻译,而这些并不是很好。
答案 1 :(得分:0)
RJS IN子句比SQL中的多个OR语句更快。
例如,如果你有3到5千条记录,那么与多重OR语句相比,IN查询将比其快5(大约)时间。
答案 2 :(得分:0)
IN (...)
和OR
表单将生成相同的查询计划,但IN()
表单更易于解析,因此在解析器和优化程序阶段花费的时间更少。< / p>