索引优化答疑补充和总结口诀|学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 快速学习索引优化答疑补充和总结口诀

开发者学堂课程【MySQL 高级应用 - 索引和锁索引优化答疑补充和总结口诀】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/598/detail/8621


索引优化答疑补充和总结口诀


目录:

一、索引优化答疑补充

二、优化总结口诀

 

一、索引优化答疑补充

假设 index(a,b,c)

Where语句

索引是否被使用

where a= 3

Y,使用到 a

where a=3and b=5

Y,使用到 a,b

where a= 3 and b=5andc=4

Y,使用到 a,b,c

where b=3 或者 where b=3andc=4 或者 where c=4

N

where a=3andc=5

使用到 a,但是 不可以, b 中间断了

where a= 3and b> 4andc=5

使用到 和 b,c 不能用在范围之后, b 断了

where a= 3 and b like 'kk%' and c= 4

Y,使用到 a,b,c

where a= 3 and b like "%kk' andc=4

Y,只用到 a

where a= 3 and b like '%kk%' andc= 4

Y,只用到 a

where a= 3 and b like '"k%kk%' andc= 4

Y,使用到 a,b,c

 

1.单列索引还是多列索引?

由于 mysql 只能用到你所有建立的索引中的唯一一个最优索引,所以如果建立多个单列索引,其实效率并不会高(虽然 mysql5.x 以上的版本,会在查询时,做索引合并的优化,但仍不建议这么做)

2.索引可以优化查询,那么索引真的越多越好吗?

由于 mysql 的索引是表的数据的一部分,就像你手中的汉语词典一样,目录越庞大,可读性越差(查询性能越差)。而且,在 insertupdatedelete 时,都要额外维护索引的成本,建立过多的索引可能意味着更差的写性能。

3.如何优化查询?

1)尽可能的让查询走索引,查询条件尽量避免出现 or

2)范围查询, col like '%xxx%'模糊查询,会导致范围|模糊查询 之后的条件索引失效

3)子查询使用关联查询替代

4)关联查询,用小表驱动大表

5)学会使用 limitlimit 会让你的查询提前返回需要的行,这点在排序的时候尤其有用(避免全部排序,只排序需要的列)

6)在多租户的系统里,千万别漏掉 tenant_id 这个辨识度最高的列( tenant_id 建议放在最左边)

 

二、优化总结口诀

全值匹配我最爱,最左前缀要遵守;

带头大哥不能死,中间兄弟不能断;

索引列上少计算,范围之后全失效:

LIKE 百分写最右,覆盖索引不写星:

不等空值还有 or,索引失效要少用;

VAR 引号不可丢,SQL 高级也不难!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
R语言表与因子(详细知识点,深入知识点后续会补充!)
R语言表与因子(详细知识点,深入知识点后续会补充!)
46 2
|
6月前
|
存储 SQL 关系型数据库
MySQL索引,看这一篇就够了!
MySQL索引,看这一篇就够了!
|
6月前
|
自然语言处理 关系型数据库 MySQL
一文明白MySQL索引的用法及好处
一文明白MySQL索引的用法及好处
77 0
|
6月前
十二、三大范式
十二、三大范式
57 0
|
存储 算法 数据库
第9章 关系查询处理和查询优化——复习笔记
第9章 关系查询处理和查询优化——复习笔记
|
SQL 关系型数据库 MySQL
MySQL索引补充
MySQL索引补充
85 0
|
SQL 关系型数据库 MySQL
MySQL查询进阶——从函数到表连接的使用你还记得吗
MySQL查询进阶——从函数到表连接的使用你还记得吗
115 0
|
SQL 搜索推荐 关系型数据库
一文带你你搞懂索引如何优化!!!
一文带你你搞懂索引如何优化!!!
|
关系型数据库 MySQL
【MySQL】数据库函数通关教程上篇(聚合、数学、字符串、日期、控制流函数)(下)
文章目录 写在前面 1 聚合函数 1.1 GROUP_CONCAT() 1.2 其他聚合函数 2 数学函数 3 字符串函数 4 日期函数 4.1 常见日期函数与使用 4.2 日期格式 5 控制流函数 5.1 if逻辑判断语句 5.2 case when语句
【MySQL】数据库函数通关教程上篇(聚合、数学、字符串、日期、控制流函数)(下)
|
关系型数据库 MySQL
【MySQL】数据库函数通关教程上篇(聚合、数学、字符串、日期、控制流函数)(上)
文章目录 写在前面 1 聚合函数 1.1 GROUP_CONCAT() 1.2 其他聚合函数 2 数学函数 3 字符串函数 4 日期函数 4.1 常见日期函数与使用 4.2 日期格式 5 控制流函数 5.1 if逻辑判断语句 5.2 case when语句
【MySQL】数据库函数通关教程上篇(聚合、数学、字符串、日期、控制流函数)(上)