mysql explain 的疑惑

小Leo 发布于 2013/05/09 16:19
阅读 205
收藏 2

知识点:explain

问题侧重:索引

描述:

我在本地 执行 explain select * from table where pk < 2000

(PK 为主键)

执行结果如下

======================================================

           id: 1
  select_type: SIMPLE
        table: table
         type: ALL
possible_keys: PRIMARY
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 41734
        Extra: Using where
1 row in set (0.00 sec)

=============================================

问题 : rows:41734  我此处理解 mysql认为需要搜索这么多条记录才能达到执行结果。

我当前数据表中总计条数 41734

也就是 索引没有使用。

啥子情况?

加载中
0
宏哥
宏哥

mysql 要是知道

它就不是mysql

0
小Leo
小Leo

引用来自“宏哥”的答案

mysql 要是知道

它就不是mysql

想不明白啊~ 在条件是 < 200 时 显示 rows = 87
0
逝水fox
逝水fox
还是那句话...除非你强制使用索引,否则当mysql判断使用索引然后取数据的开销,比直接扫表大的话,他自己会放弃使用索引。
0
小Leo
小Leo

引用来自“逝水fox”的答案

还是那句话...除非你强制使用索引,否则当mysql判断使用索引然后取数据的开销,比直接扫表大的话,他自己会放弃使用索引。
thanks 明白了· 我刚测试了下 * 换成 pk 结果 就明白了~。。。
0
酒逍遥
酒逍遥

mysql 自身会对查询语句优化执行.. 

mysql 认为使用索引并不比直接扫表快 ,就不会使用索引了

0
mark35
mark35
mysql的explain就如同做梦:你做梦的时候是很清醒的,但等你醒来回忆梦中情景时却什么都不记得了
返回顶部
顶部