加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2020-12-12 01:09:25 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL教程mysql5.6.19下子查询为什么无法使用索引》要点: 本文介绍了MYSQL教程mysql5.6.19下子查询为什么无法使用索引,希望对您有用。如果有疑问,可以联系我们。 表结构很简单 MYSQL数据库 CREATE TABLE `oplogs` (`id` int(10) unsigned NOT NULL AUTO

《MYSQL教程mysql5.6.19下子查询为什么无法使用索引》要点:
本文介绍了MYSQL教程mysql5.6.19下子查询为什么无法使用索引,希望对您有用。如果有疑问,可以联系我们。

表结构很简单MYSQL数据库

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条MYSQL数据库

sql查询语句为:MYSQL数据库

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情况下MYSQL数据库

用php读取内容并显示MYSQL数据库

首次显示结果需要3.5秒MYSQL数据库

但是同样的配置MYSQL数据库

在linux 下 5.5.38下MYSQL数据库

只需要0.7秒左右MYSQL数据库

很奇怪的情况MYSQL数据库

然后在5.6下执行了explain 结果如下:MYSQL数据库

MYSQL数据库

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

MYSQL数据库

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读