【问题标题】:MySQL simple query with int index is slow使用 int 索引的 MySQL 简单查询很慢
【发布时间】:2011-12-17 18:25:41
【问题描述】:

这个简单的查询:

SELECT trip_id from stop_times WHERE stop_id = 345

大约需要 80 毫秒,考虑到我正在迭代大约 10k 行,这实在是太多了。我的stop_times 表有大约 350 万行,stop_id 上有一个索引。关于这里发生了什么以及什么可以加快它的任何线索?

EXPLAIN [query] 输出:

id: 1   
select_type: SIMPLE
possible_keys: index_stop_times_on_stop_id
key: index_stop_times_on_stop_id
key_len: 5
ref: const
rows: 474
Extra: Using where

【问题讨论】:

  • 能否请您运行EXPLAIN SELECT trip_id from stop_times WHERE stop_id = 345 并发布结果?

标签: mysql performance indexing


【解决方案1】:

尝试将trip_id 添加到stop_id 的索引中。这样您的查询将有一个覆盖索引并且不进行查找。另外,检查执行计划 (EXPLAIN [your query])。如果索引的选择性不够,就不会被使用。

【讨论】:

  • 如何从这些解释结果中知道索引是否被使用? cl.ly/ChSQ
  • 如果使用它,您将看到using index,以及possible keys(used keys) 列中的索引名称(抱歉,不记得explain 输出中的确切列名称)跨度>
  • 所以看起来我的stop_id 索引没有被使用?为什么不呢?
  • 它被使用(using where 额外 - 这意味着索引被用于执行键值的查找 - 来自dev.mysql.com/doc/refman/5.0/en/explain-output.html
猜你喜欢
  • 2016-06-29
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多