【发布时间】:2017-06-24 22:41:08
【问题描述】:
所以假设我有这个查询:
select * from tablea where budget > 100 and users > 1000
单独的查询:
select * from tablea where budget > 100
和
select * from tablea where users > 1000
0.01~秒完成
但是,当组合条件时,查询需要 1-2 秒才能完成。
我在两列(预算、用户)上都有一个索引。
SOF 上有没有聪明人知道为什么会发生这种情况,以及在这种情况下如何优化?
补充说明:
- 运行第一个查询时,有 100000 行,100000 行用于 第二个查询,合并查询时为 3 行
- 该表有超过 100 万行
- EXPLAIN 显示使用了复合索引(budget, user):EXPLAIN EXTENDED 显示有 1477594 行,大约 50% 被过滤
【问题讨论】:
-
您的缓冲区缓存可能太低,因此连接迭代正在生成 IO。不过,这不太可能。你要不要展示一下扩展计划?
-
将其添加到问题中
-
您的 tablea 中有多少列?
-
只有查询中的 2 个
-
我指的是实际的桌子。一些信息很有趣,比如缓冲区、临时、使用索引、使用位置等。
标签: mysql performance indexing query-optimization