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 ...
最新文章
- Android报错:java.lang.IllegalArgumentException: Surface was abandoned
- 编译-C++支持iOS静态库的脚本学习
- springboot入门_打包部署
- c++ socket启动网卡接口
- 检索图书 FindMess.java
- java链表代码,java链表的基本使用 代码
- rest web服务_在WildFly的REST Web服务中与Jackson的双向关系
- iwrite提交不了作业_iWrite英语写作教学与评阅系统移动端——学生使用手册
- 用jQuery监听浏览器窗口的变化
- servlet源码查看
- 本周Asp.net源码更新(6.25-6.29)
- jquery砸金蛋 高仿阿里旅游砸金蛋
- 超详细汇总21个mysql优化实践【收藏版MySQL优化】
- 新版FMEA软件:特殊特性自动分类 免费申请试用(FMEAHunter)
- 杨辉三角形JAVA代码
- 四维图新地图坐标_移动端地图技术分享
- 如何查询硬盘序列号,百度的答案全是错的
- 详解嵌入式系统知识和接口技术总结
- Labview温度采集系统
- java服务端集成腾讯IM 腾讯云通讯生成usersig的方法
热门文章
- JavaScript从入门到放弃 - ES6中的对象和类
- docker无法连接mysql镜像_关于Docker官方CentOS镜像无法启动mysqld的总结
- python工作目录_Python目录的基本操作
- MATLAB灰度级数为1,图像处理 – 在matlab中更改灰度图像中的灰度级数
- python局部变量含义_Python的变量
- mysql_unbuffered_query pdo_php中mysql操作的buffer知识
- BugkuCTF-MISC题三色绘恋
- java不要无限循环_java – 看似无限循环终止,除非使用System.out.println
- bellman ford java_Java C 实现Bellman-ford算法
- ctf mysql hash传递_分享个 CTF 小工具 bruteHASH