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 多列优化思路?为什么不走联合索引?相关推荐

  1. mysql group by 天_MySQL group by语句如何优化

    在MySQL中,新建立一张表,该表有三个字段,分别是id,a,b,插入1000条每个字段都相等的记录,如下: mysql> show create table t1G ************* ...

  2. mysql is null走索引_mysql中IS NULL、IS NOT NULL不能走索引?

    不知道是啥原因也不知道啥时候, 江湖上流传着这么一个说法 mysql查询条件包含IS NULL.IS NOT NULL.!=.like %* .like %*%,不能使用索引查询,只能使用全表扫描. ...

  3. mysql 主从 索引_Mysql繁忙主从库在线修改表结构与添加索引问题

    本帖最后由 jan_1985 于 2014-1-15 13:28 编辑 Mysql繁忙主从库在线修改表结构与添加索引问题 一直以来,生产情况下都有修改索引和修改字段的需求,但是对锁表引起的访问不便是会 ...

  4. mysql计算三角形斜边_MySQL 5.7新特性之Generated Column(函数索引)

    MySQL 5.7引入了Generated Column,这篇文章简单地介绍了Generated Column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...

  5. mysql的order by,group by和distinct优化

    order by,group by和distinct三类操作是在MySQL中经常使用的,而且都涉及到排序,所以就把这三种操作放在一起介绍. order by的实现与优化 order by的实现有两种方 ...

  6. mysql 字段加减_MySQL数据库开发常见问题及优化(续)

    在设计表或索引时,常出现以下几个问题: 1.少建索引或不建索引.这个问题最突出,建议建表时 DBA 可以一起协助把关. 2.索引滥用.滥用索引将导致写请求变慢,拖慢整体数据库的响应速度(5.5 以下的 ...

  7. ElasticSearch探索之路(四)索引原理:倒排索引、列式存储、Fielddata、索引压缩、联合索引

    文章目录 倒排索引 Term dictionary与Term index 列式存储--Doc Values Fielddata 索引压缩 FOR编码 Roaring Bitmaps 联合索引 倒排索引 ...

  8. mysql schema数据混乱_MySQL之Schema与数据类型优化

    选择优化的数据类型 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要.不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择: 更小的通常更好 一般情况下,应该尽量使 ...

  9. 修改mysql 视图字段类型_MySQL中的数据类型,列选项,视图

    列的数据类型 整型 类型 取值范围 tinyint -128 - 127 smallint -32768 - 32767(几万) mediumint -8388608 - 8388607(几百万) i ...

最新文章

  1. Linux进程和计划任务管理(详细图例)
  2. 通过index索引定位
  3. html post前md5加密,post提交及MD5加密
  4. 字符串中全角半角之间的转换
  5. MIP 移动网页加速器视频教程全新发布
  6. 跨考计算机教研室,跨考教研室专家:脱离题海沉浮 做到有效做题_跨考网
  7. 最简易上手的numpy学习笔记三
  8. pythonの鉴黄之路(一)——YCbCr简易版鉴黄脚本
  9. 关于SQLServer2005的学习笔记——生日问题
  10. Azure HDInsight与Hadoop周边系统集成
  11. 11. PHP 运算符
  12. 为什么天才容易患阅读障碍症_王俊凯因“耳石症”缺席跨年晚会,这种病与熬夜玩手机有关?...
  13. 《SQL必知必会》附录
  14. cmos电路多余输入端能否悬空_CMOS电路不使用的输入端不能悬空,会造成逻辑混乱。 这是为什么?...
  15. 【技术贴】Windows图片和传真查看器打开图片慢,正在生成预览的解决办法!
  16. ssl 2133 腾讯大战360#spfa#
  17. 手机无限重启可能跟电压不稳有关
  18. Android 系统应用开发实战
  19. 测试人员如何区分前端和后台BUG方法流程
  20. 第二部分 s3c2440 移植linux内核 添加网卡支持 yaffs2文件系统支持

热门文章

  1. 逻辑运算符,位运算符
  2. linux-centos7 常用的基本命令--用户账号管理、查看和修改主机名
  3. java 获取ip地址_老杜带你学Java【第二课】
  4. Linux大作业任务书,《Linux系统管理》期末大作业任务书(2014.12)(1).doc
  5. C语言 fclose 函数 - C语言零基础入门教程
  6. 从尾到头打印单链表(C语言)
  7. 深度系统如何安装mysql_deepin 安装mysql apache
  8. mate7安装android o,华为Mate7升级安卓6.0详细教程
  9. linux qemu运行windows,用qemu搭建CentOS 6 for colinux虚拟系统——《Windows下搭建CentOS 6开发环境之一》...
  10. php毕设,php毕设