1. 创建数据表及插入数据
create table if not exists article(id int(10) unsigned not null primary key auto_increment,author_id int(10) unsigned not null,/*作者编号*/category_id int(10) unsigned not null,/*种类编号*/views int(10) unsigned not null,comments int(10) unsigned not null,title varchar(255) not null,content text not null
);
insert into article(author_id,category_id,views,comments,title,content) values
(1,1,1,1,'1','1'),(2,2,2,2,'2','2'),(1,1,3,3,'3','3');
  1. 问题提出:查询category_id为1且comments大于1的情况下,views最多的article_id
  2. 问题分析:可以将category_id和comments作为where的查询条件,根据views排序,限制显示一条信息即可
  3. SQL语句:
select id,author_id from article where category_id = 1 and comments > 1 order by views desc limit 1;

查询是可以的:
5. 使用 explain 关键字进行分析:
出现了type=ALL和Extra 含有 using filesort 情况,这是我们极其不愿意看到的全表查询和使用文件排序,产生临时表,key为NULL表示实际上也没有用到索引
5. 在创建表的时候是没有创建索引的,接下来我们为表创建多值索引(因为我们需求用到了其中三个索引)

create index ccv on article(category_id,comments,views);
  1. 再来执行上面 explain分析语句:
  2. 显然type从All变为了 range,这是我们希望看到的,但是,从extra列看,还存在使用文件排序的情况,我们知道,使用filesort原因是索引值存在范围情况,不唯一,如果我们把 comments > 1 改成 comments = 1,我们再来看:
    type直接从 range 级别到了 ref 级别,也不存在 filesort 了,所以给我们一个提示,存在 filesort 是因为comments这一查询条件不唯一,接下来我们把索引改一下,去掉comments这一列试试:
drop index ccv on article;
create index cv on article(category_id,views);
  1. 在来看 explain 执行情况:
    这样,再次查询需求完成了,性能方面也符合了需要,这仅仅是一个索引优化的小案例,希望对大家有帮助!

MySQL的单表索引优化案例相关推荐

  1. 怎么看我装的sql能不能用_深入浅出sql优化(三)之单表索引优化

    大家好,我是闲水,每天更新java最新最热技术,对java感兴趣的朋友记得关注一下哦. 注意 :这是SQL性能优化第三章,点击关注查看前置内容. 上篇文章我们主要了解了索引优化的标尺"Exp ...

  2. Mysql之索引优化案例

    Mysql之索引优化案例 1.单表简单案例 1.1创建表 1.2 问题: 1.3 解决:新建索引 1.4 再次执行 2.双表简单案例 2.1创建表并插入数据 2.2 由于是LEFT JOIN,所以左表 ...

  3. psql where里有自定义函数慢_阿里P8架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结...

    MySQL优化概述 MySQL数据库常见的两个瓶颈是:CPU和I/O的瓶颈. CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候. 磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应 ...

  4. mysql多张表join_SQL优化之多表join

    关于Join 如上图所示,left join和inner join的取值范围还是有很明显的不同的,看网上不少文章优化left join也不交代上下文环境,直接就是教唆把left join换成inner ...

  5. 【学习笔记】MySQL数据库高级版 - 索引优化、慢查询、锁机制等

    本文是尚硅谷周阳(阳哥)老师的MySQL高级篇视频的学习笔记.由于视频比较老,所以在高版本的MySQL中索引的地方做了优化,和视频的内容不完全一样,不过大体一致.从第四节锁机制开始的部分还没有整理. ...

  6. MySQL分库分表和优化

    第九阶段模块三 分库分表技术之MyCat 1.海量存储问题 1.1 背景描述 随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无 ...

  7. 一文带你了解MySQL之单表访问方法

    前言 对于我们这些MySQL的使用者来说,MySQL其实就是一个软件,平时用的最多的就是查询功能.DBA时不时丢过来一些慢查询语句让优化,我们如果连查询是怎么执行的都不清楚还优化什么,所以是时候掌握真 ...

  8. mysql模糊查询之索引优化

    mysql模糊查询之索引优化 三表连查之模糊查询索引优化 注:具体用法10和11步骤. 1.t_project表 DROP TABLE IF EXISTS `t_project`; CREATE TA ...

  9. 【MySQL】单表支持并行导出的工具--mydumper

    [MySQL]单表支持并行导出的工具–mydumper 下载和安装: https://github.com/maxbube/mydumper RHEL6.5源码安装mydumper 0.9.5: yu ...

最新文章

  1. python 漂亮打印 pprint 简写
  2. shared_ptr 的使用及注意事项
  3. 计算机软考网络工程师历年真题,计算机软考《网络工程师》考试历年真题精选(1)...
  4. 使用jdbc执行SQL实现登录查询1-带配置文件和工具类
  5. ubuntu20有道词典亲测安装记录
  6. python字符串前面加u,r,b的含义
  7. 《Beginning Linux Programming》读书笔记(一)
  8. 牛客网在线编程Javascript输入输出
  9. Android Studio 文件名颜色代表含义
  10. 制作你软盘镜像_codestorm_新浪博客
  11. PointRCNN:3D Object Proposal Generation and Detection from Point Cloud
  12. 使用屏幕录制专家--录制视频技巧
  13. Jquery实现遮罩
  14. Powershell-批量重命名替换文件名
  15. ECshop生成网站地图url
  16. 位(bit)、字节(Byte)、MB(兆位)换算关系
  17. 解密秒杀系统架构:不是所有的秒杀都是秒杀
  18. [ZT]crontab 调度程序按时执行
  19. js中弹框的三种方式
  20. 可视化搭建平台的参考网格线设计

热门文章

  1. 【ABAP妙用】复制ALV之负号提前
  2. SAP打印机原理、打印配置及打印操作
  3. 实例:ABAP权限对象设计与权限检查的实现
  4. 物料变式的订货型生产(3.0C:可库存的类型)(26)
  5. WSAENOBUFS: No buffer space available in SAP
  6. Function One
  7. 宏光MINI EV收割的年轻人,又被苏宁、小米、欧拉盯上了
  8. linux虚拟化毕业设计,毕业设计(论文)-基于Linux的云校园桌面虚拟化系统的设计与实现(68页)-原创力文档...
  9. adobe reader java_使用PDF框设置的表单字段值在Adobe Reader中不可见
  10. php编译成二进制文件_JVM字节码文件概述