MySQL不走联合索引_mysql group by 多列优化思路?为什么不走联合索引?
explain SELECT a, b, COUNT(*) FROM tbname
GROUP BY a, b
order by a DESC
limit 1
a 和 b 列已经设置联合索引, 为什么这种操作也会执行全表扫描呢?explain SELECT a, b FROM tbname
GROUP BY a, b
order by a DESC
去掉 COUNT 和 limit 则走索引没有扫描, 这是为什么呢?
这种场景有什么优化思路呢?
表结构CREATE TABLE `tbname` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`a` INT(11) NULL DEFAULT '0',
`b` INT(11) NULL DEFAULT '0',
PRIMARY KEY (`id`),
INDEX `testkey` (`a`, `b`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
INSERT INTO `tbname` (`a`, `b`) VALUES ('1', '1');
INSERT INTO `tbname` (`a`, `b`) VALUES ('1', '1');
INSERT INTO `tbname` (`a`, `b`) VALUES ('1', '1');
INSERT INTO `tbname` (`a`, `b`) VALUES ('1', '1');
INSERT INTO `tbname` (`a`, `b`) VALUES ('1', '1');
查询1:explain SELECT a, b, COUNT(*) FROM tbname
GROUP BY a, b
order by a DESC
limit 1
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
| ---: | --- | --- | --- | --- | --- | --- | --- | --- | ---: | ---: | --- |
| 1 | SIMPLE | tbname | \N | index | testkey | testkey | 10 | \N | 5 | 100.00 | Using index; Using temporary; Using filesort |
查询2:explain SELECT a, b FROM tbname
GROUP BY a, b
order by a DESC
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
| ---: | --- | --- | --- | --- | --- | --- | --- | --- | ---: | ---: | --- |
| 1 | SIMPLE | tbname | \N | range | testkey | testkey | 10 | \N | 1 | 100.00 | Using index for group-by; Using temporary; Using filesort |
MySQL不走联合索引_mysql group by 多列优化思路?为什么不走联合索引?相关推荐
- mysql group by 天_MySQL group by语句如何优化
在MySQL中,新建立一张表,该表有三个字段,分别是id,a,b,插入1000条每个字段都相等的记录,如下: mysql> show create table t1G ************* ...
- mysql is null走索引_mysql中IS NULL、IS NOT NULL不能走索引?
不知道是啥原因也不知道啥时候, 江湖上流传着这么一个说法 mysql查询条件包含IS NULL.IS NOT NULL.!=.like %* .like %*%,不能使用索引查询,只能使用全表扫描. ...
- mysql 主从 索引_Mysql繁忙主从库在线修改表结构与添加索引问题
本帖最后由 jan_1985 于 2014-1-15 13:28 编辑 Mysql繁忙主从库在线修改表结构与添加索引问题 一直以来,生产情况下都有修改索引和修改字段的需求,但是对锁表引起的访问不便是会 ...
- mysql计算三角形斜边_MySQL 5.7新特性之Generated Column(函数索引)
MySQL 5.7引入了Generated Column,这篇文章简单地介绍了Generated Column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...
- mysql的order by,group by和distinct优化
order by,group by和distinct三类操作是在MySQL中经常使用的,而且都涉及到排序,所以就把这三种操作放在一起介绍. order by的实现与优化 order by的实现有两种方 ...
- mysql 字段加减_MySQL数据库开发常见问题及优化(续)
在设计表或索引时,常出现以下几个问题: 1.少建索引或不建索引.这个问题最突出,建议建表时 DBA 可以一起协助把关. 2.索引滥用.滥用索引将导致写请求变慢,拖慢整体数据库的响应速度(5.5 以下的 ...
- ElasticSearch探索之路(四)索引原理:倒排索引、列式存储、Fielddata、索引压缩、联合索引
文章目录 倒排索引 Term dictionary与Term index 列式存储--Doc Values Fielddata 索引压缩 FOR编码 Roaring Bitmaps 联合索引 倒排索引 ...
- mysql schema数据混乱_MySQL之Schema与数据类型优化
选择优化的数据类型 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要.不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择: 更小的通常更好 一般情况下,应该尽量使 ...
- 修改mysql 视图字段类型_MySQL中的数据类型,列选项,视图
列的数据类型 整型 类型 取值范围 tinyint -128 - 127 smallint -32768 - 32767(几万) mediumint -8388608 - 8388607(几百万) i ...
最新文章
- Linux进程和计划任务管理(详细图例)
- 通过index索引定位
- html post前md5加密,post提交及MD5加密
- 字符串中全角半角之间的转换
- MIP 移动网页加速器视频教程全新发布
- 跨考计算机教研室,跨考教研室专家:脱离题海沉浮 做到有效做题_跨考网
- 最简易上手的numpy学习笔记三
- pythonの鉴黄之路(一)——YCbCr简易版鉴黄脚本
- 关于SQLServer2005的学习笔记——生日问题
- Azure HDInsight与Hadoop周边系统集成
- 11. PHP 运算符
- 为什么天才容易患阅读障碍症_王俊凯因“耳石症”缺席跨年晚会,这种病与熬夜玩手机有关?...
- 《SQL必知必会》附录
- cmos电路多余输入端能否悬空_CMOS电路不使用的输入端不能悬空,会造成逻辑混乱。 这是为什么?...
- 【技术贴】Windows图片和传真查看器打开图片慢,正在生成预览的解决办法!
- ssl 2133 腾讯大战360#spfa#
- 手机无限重启可能跟电压不稳有关
- Android 系统应用开发实战
- 测试人员如何区分前端和后台BUG方法流程
- 第二部分 s3c2440 移植linux内核 添加网卡支持 yaffs2文件系统支持
热门文章
- 逻辑运算符,位运算符
- linux-centos7 常用的基本命令--用户账号管理、查看和修改主机名
- java 获取ip地址_老杜带你学Java【第二课】
- Linux大作业任务书,《Linux系统管理》期末大作业任务书(2014.12)(1).doc
- C语言 fclose 函数 - C语言零基础入门教程
- 从尾到头打印单链表(C语言)
- 深度系统如何安装mysql_deepin 安装mysql apache
- mate7安装android o,华为Mate7升级安卓6.0详细教程
- linux qemu运行windows,用qemu搭建CentOS 6 for colinux虚拟系统——《Windows下搭建CentOS 6开发环境之一》...
- php毕设,php毕设