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行变化太大了,一个进行了完整的遍历,第一个使用了索引,造成差距过大,不过原因尚未找到,有哪位知道呢?
相关推荐
-
详细讲述MySQL中的子查询操作
继续做以下的前期准备工作: 新建一个测试数据库TestDB: create database TestDB; 创建测试表table1和table2: CREATE TABLE table1 ( customer_id VARCHAR(10) NOT NULL, city VARCHAR(10) NOT NULL, PRIMARY KEY(customer_id) )ENGINE=INNODB DEFAULT CHARSET=UTF8; CREATE TABLE table2 ( order_id
-
MySQL子查询的几种常见形式介绍
mysql子查询的几种常见写法: 复制代码 代码如下: select * from xxx where col = [any|all](select * from xxxx); 该句法可分为加关键词和不加关键词的写法,当不加关键词的时候,子查询语句返回的是一个离散值(注意是一个),查询语句将以子查询语句的结果作为自己 where子句的条件进行查询,该句法可以在子查询语句前加入any.all.some等关键字,此时子查询语句返回的是一组离散值.any则表示,查询语句是以子查询返回的值作为一个范围,
-
MySQL延迟关联性能优化方法
[背景] 某业务数据库load 报警异常,cpu usr 达到30-40 ,居高不下.使用工具查看数据库正在执行的sql ,排在前面的大部分是: 复制代码 代码如下: SELECT id, cu_id, name, info, biz_type, gmt_create, gmt_modified,start_time, end_time, market_type, back_leaf_category,item_status,picuture_url FROM relation where bi
-
Mysql子查询IN中使用LIMIT应用示例
这两天项目里出了一个问题,LIMIT使用后报错. 需求是这样的,我有3张表,infor信息表,mconfig物料配置表,maaply物料申请表,要求是读出申请表中哪些人申请哪些物料 于是我先是这样写的: 复制代码 代码如下: SELECT infor.name,infor.phone,infor.add, mconfig.mname,mapply.acount,from_unixtime(mapply.atime,'%Y-%m-%d') as 'atime' FROM mapply right
-
mysql性能优化之索引优化
作为免费又高效的数据库,mysql基本是首选.良好的安全连接,自带查询解析.sql语句优化,使用读写锁(细化到行).事物隔离和多版本并发控制提高并发,完备的事务日志记录,强大的存储引擎提供高效查询(表记录可达百万级),如果是InnoDB,还可在崩溃后进行完整的恢复,优点非常多.即使有这么多优点,仍依赖人去做点优化,看书后写个总结巩固下,有错请指正. 完整的mysql优化需要很深的功底,大公司甚至有专门写mysql内核的,sql优化攻城狮,mysql服务器的优化,各种参数常量设定,查询语句优化,主
-
Mysql数据库性能优化之子查询
记得在做项目的时候, 听到过一句话, 尽量不要使用子查询, 那么这一篇就来看一下, 这句话是否是正确的. 那在这之前, 需要介绍一些概念性东西和mysql对语句的大致处理. 当Mysql Server的连接线程接收到Client发送过来的SQL请求后, 会经过一系列的分解Parse, 进行相应的分析, 然后Mysql会通过查询优化器模块, 根据该Sql所涉及到的数据表的相关统计信息进行计算分析. 然后在得出一个Mysql自认为最合理最优化的数据访问方式, 也就是我们常说的"执行计划",
-
MySQL 5.7增强版Semisync Replication性能优化
一 前言 前文 介绍了5.5/5.6 版本的MySQL semi sync 基础原理和配置,随着MySQL 5.7 的发布,新版本的MySQL修复了semi sync 的一些bug 并且增强了功能. 支持发送binlog和接受ack的异步化; 支持在事务commit前等待ACK; 在server层判断备库是否要求半同步以减少Plugin锁冲突; 解除binlog dump线程和lock_log的冲突等等. 本文重点分析 第1,2个改进项,因为原来的模式的确会影响系统的tps,新的异步模式可以提高
-
详解MySQL性能优化(一)
一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件.首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.MYI文件,分别存放了表的数据(.MYD)和索引数据(.MYI).每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存储,也就是说不管这个表有
-
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
-
解决MySQL中IN子查询会导致无法使用索引问题
今天看到一篇关于MySQL的IN子查询优化的案例, 一开始感觉有点半信半疑(如果是换做在SQL Server中,这种情况是绝对不可能的,后面会做一个简单的测试.) 随后动手按照他说的做了一个表来测试验证,发现MySQL的IN子查询做的不好,确实会导致无法使用索引的情况(IN子查询无法使用所以,场景是MySQL,截止的版本是5.7.18) MySQL的测试环境 测试表如下 create table test_table2 ( id int auto_increment primary key, p
-
Windows下安装MySQL5.5.19图文教程
本文详细介绍了Windows下安装MySQL5.5.19的全过程,希望对初学者有帮助. 下载mysql-5.5.19-win32.msi安装文件,双击运行,出现如下界面. mysql安装向导启动,按"Next"继续 在 I accept the terms in the License Agreement(我接受许可协议中的条款)前面打上勾.按"Next"继续. 选择安装类型,有"Typical(默认)"."Custom(自定义)&qu
-
你知道mysql哪些查询情况不走索引吗
目录 前言 mysql哪些查询情况不走索引 不走索引的情况: 总结 前言 在MySQL中,并不是你建立了索引,并且你在SQL中使用到了该列,MySQL就肯定会使用到那些索引的,有一些情况很可能在你不知不觉中,你就“成功的避开了”MySQL的所有索引. mysql哪些查询情况不走索引 1.索引列参与计算,不走索引 SELECT `username` FROM `t_user` WHERE age=20;-- 会使用索引 SELECT `username` FROM `t_user` WHERE a
-
MySQL查询性能优化索引下推
目录 前言 1. 索引下推的作用 2. 案例实践 3. 索引下推配置 4. 索引下推原理剖析 5. 索引下推应用范围 前言 前面已经讲了MySQL的其他查询性能优化方式,没看过可以去了解一下: MySQL查询性能优化七种方式索引潜水 MySQL查询性能优化武器之链路追踪 今天要讲的是MySQL的另一种查询性能优化方式 — 索引下推(Index Condition Pushdown,简称ICP),是MySQL5.6版本增加的特性. 1. 索引下推的作用 主要作用有两个: 减少回表查询的次数 减少存
-
Windows10下MySQL5.7.19安装教程 MySQL忘记root密码修改方法
以MySQL5.7.19安装为例,先进行下载 当然首先是要下载咯https://dev.mysql.com/downloads/mysql/ 官网下载地址. 选择适合自己电脑的版本,点击Download,跳转,直接No thanks下载好了. 静静的等待下载,解压.这是我的解压路径D:\MySQL 正式开始安装 :Windows10 :MySQL5.7.19 解压之后 然而并没有my.ini 创建一个就行了,新建文本文档->后缀名改成ini就行了. [Client] #设置3306端口 port
-
winx64下mysql5.7.19的基本安装流程(详细)
1·下载 https://dev.mysql.com/downloads/mysql/ http://www.jb51.net/softs/451120.html 2·安装服务 1)管理员运行cmd 2)D: 3)cd D:\mysql-5.7.19-winx64\bin 4)然后执行注册服务命令 切换目录至mysql包所在的bin目录.然后输入 mysqld.exe -install 执行命令后,提示:Service successfully installed. 表示安装成功. 启动服务用:
-
windows server2016安装MySQL5.7.19解压缩版教程详解
记录了MySQL 5.7.19 winx64解压缩版安装教程,具体内容如下 系统环境:Win7 x64 软件准备:mysql 5.7.19 winx64 下载网址:https://dev.mysql.com/downloads/mysql/ 配置安装流程 具体安装如下: 1.把 mysql-5.7.19-winx64.zip 压缩文件解压到 C:\MySQL\ 目录下: 2.在 C:\MySQL\ 目录下新建 my.ini 配置文件: 3.用文本编辑器或其他编辑器打开 my.ini 文件,把以下
-
mysql5.7.19 安装配置方法图文教程(win10)
WIN10系统MYSQL的下载与安装详细教程,记录如下 前两天ubuntu下安装mysql遇到了一些依赖问题,结果解决了半天,没解决好,还把我的系统搞坏了,小白破坏力好强. 到现在我的ubuntu也没装好,电脑驱动的问题,联想小新310一装ubuntu,进去就卡,原来禁用原先的显卡驱动,可是第二次装系统,中间又搞了其他小动作,结果再装上系统后,禁用显卡驱动也不行了.只能先装win10用了,不料win10下安装Mysql又出现了问题,真是一波未平一波又起.解决了好长时间,所以写个博客记录一下吧.
-
Centos7 移动mysql5.7.19 数据存储位置的操作方法
场景:随着数据量的增加,mysql所在的磁盘已占满,需要将data移动到空间较大的盘上. 方法: 1. 关闭mysql服务 service mysqld stop 2. 将data目录移动到空间较大的盘上 cp -a /usr/local/mysql/data/ /home/mysqldata/ -a :相当于 -pdr 的意思(参数pdr分别为:保留权限,复制软链接本身,递归复制): 3 . 修改配置文件my.cnf ... sql_mode=NO_ENGINE_SUBSTITUTION,ST
随机推荐
- 不错的rss看样要学习了
- XML指南——XML数据岛
- 详解Vue.js基于$.ajax获取数据并与组件的data绑定
- Javascript基础教程之JavaScript语法
- 广交会常用英语(Canton Fair English)
- linux下实现web数据同步的四种方式(性能比较)
- iOS10适配(必看)
- Bootstrap CSS组件之面包屑导航(breadcrumb)
- PHP检测移动设备类mobile detection使用实例
- PHP输入输出流学习笔记
- 正则表达式匹配中文与双字节的代码
- 有关suggest快速删除后仍然出现下拉列表的bug问题
- [推荐]ASP编程通用函数收藏大全第1/2页
- Android中TabLayout+ViewPager实现tab和页面联动效果
- 详解nodejs 文本操作模块-fs模块(一)
- Spring在代码中获取bean的方法小结
- win2008 R2 下 IIS7.5+PHP5.2.17+Mysql5.5.16+Zend3.3.3
- 一定时间滚动的链接菜单效果
- Android中转场动画的实现与兼容性处理
- PHP实现多文件上传的方法