【MySQL】MySQL索引优化实战(上)

本文深入探讨了MySQL索引优化的各种策略,包括联合索引、强制走索引、覆盖索引、in和or操作、like查询的索引下推优化,以及Order by和Group by的优化。通过实例分析,解释了MySQL如何选择合适的索引,并介绍了trace工具的使用。此外,文章还讲解了文件排序的原理,包括单路排序和双路排序,以及索引设计的原则和实战应用。
摘要由CSDN通过智能技术生成

【MySQL】MySQL索引优化实战(上)

数据准备-SQL

一些复杂的索引优化例子 

1、联合索引第一个字段用范围不会走索引

2、强制走索引

3、覆盖索引优化

4、in和or在表数据量比较大的情况会走索引,在表记录不多的情况下会选择全表扫描

5、like KK% 一般情况都会走索引(索引下推)

索引下推

什么是索引下推?

为什么范围查找(大于号)MySQL没有用索引下推优化?

MySQL如何选择合适的索引 

trace工具用法

第一阶段:SQL准备阶段,格式化sql

第二阶段:SQL优化阶段 

第三阶段:SQL执行阶段

Order by与Group by优化(重点!!!)

Order by 优化

CASE 1:

CASE 2:

CASE 3:

CASE 4:

CASE 5: 

CASE 6:

Group by 优化 

优化总结 

Using filesort文件排序原理详解(难点)

单路排序

单路排序的详细过程

双路排序

双路排序的详细过程

MySQL自身对于排序规则的选择 

关于max_length_for_sort_data的总述

注意事项!!! 

索引设计原则

1、代码先行,索引后上

2、联合索引尽量覆盖条件

3、不要在小基数字段上建立索引

4、长字符串我们可以采用前缀索引

5、where与order by冲突时优先where

6、基于慢sql查询做优化

索引设计实战

下一节——MySQL索引优化实战(上)


数据准备-SQL

CREATE TABLE `employees` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名',
  `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',
  `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位',
  `hire_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入职时间',
  PRIMARY KEY (`id`),
  KEY `idx_name_age_position` (`name`,`age`,`position`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='员工记录表';

INSE
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金鳞踏雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值