文章目录

  • 索引优化
    • 索引分类
    • 回表
    • 覆盖索引
    • 键表SQL
    • 来使用口诀来练习

索引优化

  • 索引优化不只是单单对复合索引
  • 也是对普通索引的一种优化

索引分类

分类角度 索引名称
数据结构 B+数,Hash索引, B数等
存储层面 聚簇索引,非聚簇索引
逻辑层面 主键索引,普通索引,复合索引(MySQL 组合索引和联合索引和复合索引都是一个东西),唯一索引,空间索引等

回表

  • 当我们执行一条查询语句select * from persion where id=6,因为直接使用的是主键id查询,所以就会用主键索引,由于主键索引直接关联了整个所有数据,所以,引擎只要执行一次就能查询出结果

如果执行的SQL语句是非主键索引

select * from person where age = 19
  • 以上的这条语句走age的普通索引,索引先根据age搜索等于18的索引记录,找到id=10,然后再到主键索引搜索一次,然后拿出查询的数据
  • 从普通索引查出主键索引,然后查询出数据的过程叫做回表,由于回表需要多执行一次查询,这也是为什么主键索引要比普通索引要快的原因,所以,我们要尽量使用主键查询

覆盖索引

  • 我们通常创建索引的依据都是根据查询的where条件,但是这只是我们通过的做法,我们根据上面的分析可以知道,如果要想查询效率高,第一,使用主键索引,第二,避免回表,也就是尽可能的在索引中就能获得想要的数据。如果一个索引包含了需要查询的字段,那么我们就叫做"覆盖索引"

键表SQL

创表

create table staffs(id int primary key auto_increment,name varchar(24) not null default "",age int not null default 0,pos varchar(20) not null default "",add_time timestamp not null default CURRENT_TIMESTAMP
)charset utf8;

插入数据

insert into staffs(`name`,`age`,`pos`,`add_time`) values('z3',22,'manager',now());
insert into staffs(`name`,`age`,`pos`,`add_time`) values('July',23,'dev',now());
insert into staffs(`name`,`age`,`pos`,`add_time`) values('2000',23,'dev',now());

建立复合索引

create index idx_staffs_NameAgePos on staffs(name, age, pos)



口诀

  • 全值匹配我最爱,最左前缀要遵守
  • 带头大哥不能死,中间兄弟不能断
  • 索引列上少计算,范围之后全失效
  • like百分写最右,覆盖索引不写星
  • 不等空值还有or,索引失效要少用
  • varchar引号不可丢,SQL高级也不难

来使用口诀来练习





MySQL5.7数据库-索引优化相关推荐

  1. mysql性能结构优化原理_MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化...

    一.数据库结构优化(非常重要) 1.1 数据库结构优化目的 1.减少数据冗余:(数据冗余是指在数据库中存在相同的数据,或者某些数据可以由其他数据计算得到),注意,尽量减少不代表完全避免数据冗余: 2. ...

  2. 知识点:Mysql 数据库索引优化实战(4)

    知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 一:插入订单 业务逻辑:插 ...

  3. Oracle学习总结(7)—— 常用的数据库索引优化语句总结

    不管是用C/C++/Java等代码编写的程序,还是SQL编写的数据库脚本,都存在一个持续优化的过程.也就是说,代码优化对于程序员来说,是一个永恒的话题. 近期,我们对之前编写的数据库脚本进行了全面的自 ...

  4. ef mysql 优化_MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化...

    一.数据库结构优化(非常重要) 1.1 数据库结构优化目的 1.减少数据冗余:(数据冗余是指在数据库中存在相同的数据,或者某些数据可以由其他数据计算得到),注意,尽量减少不代表完全避免数据冗余: 2. ...

  5. MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化...

    一.数据库结构优化(非常重要) 1.1 数据库结构优化目的 1.减少数据冗余:(数据冗余是指在数据库中存在相同的数据,或者某些数据可以由其他数据计算得到),注意,尽量减少不代表完全避免数据冗余: 2. ...

  6. 第6章 数据库索引优化

    6-1 Btree索引和Hash索引 Btree索引--顺序存储- B-Tree索引适合Order By 联合索引 ---------------重点内容 Hash索引 -相对比较快- 等值查询 为什 ...

  7. 数据库索引优化原理,索引的工作机制

    我们通过一个简单的例子来开始教程,解释为什么我们需要数据库索引.假设我们有一个数据库表 Employee, 这个表有三个字段(列)分别是 Employee_Name.Employee_Age 和Emp ...

  8. 架构设计器_MySQL:数据库结构优化、高可用架构设计、数据库索引优化

    一.SQL查询优化(重要) 1.1 获取有性能问题SQL的三种方式 通过用户反馈获取存在性能问题的SQL: 通过慢查日志获取存在性能问题的SQL: 实时获取存在性能问题的SQL: 1.1.2 慢查日志 ...

  9. linux数据泵导入command not found_MySQL:数据库结构优化、高可用架构设计、数据库索引优化...

    一.SQL查询优化(重要) 1.1 获取有性能问题SQL的三种方式 通过用户反馈获取存在性能问题的SQL: 通过慢查日志获取存在性能问题的SQL: 实时获取存在性能问题的SQL: 1.1.2 慢查日志 ...

  10. MySQL:数据库结构优化、高可用架构设计、数据库索引优化

    一.SQL查询优化(重要) 1.1 获取有性能问题SQL的三种方式 通过用户反馈获取存在性能问题的SQL: 通过慢查日志获取存在性能问题的SQL: 实时获取存在性能问题的SQL: 1.1.2 慢查日志 ...

最新文章

  1. docker run 挂载卷_如何在构建期间将主机卷挂载到Dockerfile中的Docker容器中
  2. Linux空间过满无法登录,linux下磁盘空间不足导致oracle无法登录的解决方案
  3. 轻量级人脸属性Slim-CNN
  4. c语言编程用得上i7,为什么我的C应用程序比Core i7上的C应用程序(使用相同的库)更快...
  5. java i 什么时候变_Java中i++与++i的区别(效率分析)
  6. boost::cv_status相关的测试程序
  7. python语言用什么关键字来声明一个类_python使用什么关键字定义类
  8. Android面试总结经
  9. c语言用栈实现计算器加法运算,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...
  10. 官宣!阿里进军 5G,成立 XG 实验室发力新基建
  11. NYOJ--102--次方求模
  12. php开发技术规范怎么写,PHP开发技术规范!(2)
  13. 前端应用 - 汉字笔顺书写演示带拼音及发音
  14. c语言链表课件,C语言链表详解ppt课件.ppt
  15. python中sticky_position: sticky 详解(防坑指南)
  16. 免杀实战之面向PHP的WebShell免杀
  17. 我用Python分析淘宝低价人群和匿名人群的连衣裙数据后,发现了这些秘密!
  18. python websocket 断线自动重连
  19. BIM应用(VR\AR\MR)相关设备及软件——来自《中国建筑业BIM应用分析报告(2020)》
  20. 汇编语言(四)-8086的指令系统

热门文章

  1. 安卓24:Android关于日期和时间的几个相关控件DatePicker、TimePicker等
  2. Sublime Text3配置LaTeX环境及使用Sumatra PDF作为阅读器——亲测可用
  3. 几何画板如何绘制动态正切函数图像
  4. 自写日历(周日历,农历节日节气)
  5. uniapp发布苹果IOS测试版 下载无法安装
  6. 游戏契合度提示音_产品/市场契合度
  7. linux中下载安装包
  8. 灵格斯 Lingoes 2.8 去广告 禁止新词锐词弹窗
  9. 又是灵格斯导致软件自动关闭
  10. 微信朋友圈照片格式html,实测:微信朋友圈这样发图最清晰