mysql5.6.19下子查询为什么无法使用索引

 更新时间:2014年08月05日 10:01:30   投稿:whsnow  
这篇文章主要介绍了mysql5.6.19下子查询为什么无法使用索引,需要的朋友可以参考下

表结构很简单

CREATE TABLE `oplogs` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`kind` varchar(45) NOT NULL DEFAULT '',
`op` varchar(100) NOT NULL,
`user` varchar(25) NOT NULL DEFAULT '',
`ip` varchar(16) NOT NULL DEFAULT '',
`updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=34896 DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED

结果有34895条

sql查询语句为:

SELECT a.id,a.kind,a.op,a.user,a.ip,a.updatetime FROM oplogs as a inner join(select id from oplogs where 1 order by id desc limit 0,20) as b using(id)

在5.6.19情况下

用php读取内容并显示

首次显示结果需要3.5秒

但是同样的配置

在linux 下 5.5.38下

只需要0.7秒左右

很奇怪的情况

然后在5.6下执行了explain 结果如下:

而同样的数据 explain 结构如下:

比较结果很明显 主要在于对oplogs进行排序时,rows行变化太大了,一个进行了完整的遍历,第一个使用了索引,造成差距过大,不过原因尚未找到,有哪位知道呢?

相关文章

  • JDBC连接MySQL5.7的方法

    JDBC连接MySQL5.7的方法

    这篇文章主要介绍了JDBC连接MySQL5.7的方法,需要的朋友可以参考下
    2018-05-05
  • 在CMD中操作mysql数据库出现中文乱码解决方案

    在CMD中操作mysql数据库出现中文乱码解决方案

    有说将cmd字符编码用chcp命令改为65001(utf8字符编码),可这样之后根本无法输入中文,查询出的中问结果依旧乱码 。下面小编给大家带来了在CMD中操作mysql数据库出现中文乱码解决方案,一起看看吧
    2017-09-09
  • VS2022连接数据库MySQL并进行基本的表的操作指南

    VS2022连接数据库MySQL并进行基本的表的操作指南

    鉴于MySQL数据库的流行与强大,决定多学习使用,下面这篇文章主要给大家介绍了关于VS2022连接数据库MySQL并进行基本的表的操作指南,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • mysql视图原理与用法实例小结

    mysql视图原理与用法实例小结

    这篇文章主要介绍了mysql视图原理与用法,结合实例形式分析了mysql视图的概念、原理、创建、使用方法及相关注意事项,需要的朋友可以参考下
    2018-04-04
  • MySQL的查询缓存和Buffer Pool

    MySQL的查询缓存和Buffer Pool

    这篇文章主要介绍了MySQL的查询缓存和Buffer Pool,帮助大家更好的理解和学习MySQL 数据库,感兴趣的朋友可以了解下
    2020-11-11
  • Mysql连接无效(invalid connection)问题及解决

    Mysql连接无效(invalid connection)问题及解决

    这篇文章主要介绍了Mysql连接无效(invalid connection)问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • mysql sql字符串截取函数详解

    mysql sql字符串截取函数详解

    mysql支持的字符串截取函数主要有 left()、right()、substring()、substring_index(),下面是这些函数的详细使用方法
    2022-10-10
  • Mysql忘记密码的几种解决方案

    Mysql忘记密码的几种解决方案

    今天小编就为大家分享一篇关于Mysql忘记密码的几种解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 详解mysql表数据压缩

    详解mysql表数据压缩

    mysql进行压缩是借助于zlib库,采用L777压缩算法,这种算法在减少数据大小、CPU利用方面是成熟的、健壮的、高效的,这篇文章主要介绍了mysql表数据压缩,需要的朋友可以参考下
    2022-01-01
  • MySQL 添加、修改、删除表的列及约束等表的定义

    MySQL 添加、修改、删除表的列及约束等表的定义

    这篇文章主要介绍了MySQL 添加、修改、删除表的列及约束等表的定义,需要的朋友可以参考下
    2014-03-03

最新评论