mysql索引优化

devtools/2024/11/14 0:24:29/

判断索引选择性好坏

可以使用 show index from table_name方法,看到一个索引的基数。“基数”(cardinality)越大,索引的区分度越好。
show index from *****;

索引优化

(1)如果 force index 指定的索引在候选索引列表中,就直接选择这个索引,不再评估其他索引的执行代价。
(2)可以考虑修改语句,引导 MySQL 使用我们期望的索引。比如,在这个例子里,显然把“order by b limit 1” 改成 “order by b,a limit 1” ,语义的逻辑是相同的。
(3)在有些场景下,我们可以新建一个更合适的索引,来提供给优化器做选择,或删掉误用的索引。

索引采样

InnoDB 默认会选择 N 个数据页,统计这些页面上的不同值,得到一个平均值,然后乘以这个索引的页面数,就得到了这个索引的基数。而数据表是会持续更新的, 索引统计信息也不会固定不变。所以,当变更的数据行数超过 1/M 的时候,会自动触发重新 做一次索引统计。 在 MySQL 中,有两种存储索引统计的方式,可以通过设置参数 innodb_stats_persistent 的值来选择:
设置为 on 的时候,表示统计信息会持久化存储。这时,默认的 N 是 20,M 是 10。
设置为 off 的时候,表示统计信息只存储在内存中。这时,默认的 N 是 8,M 是 16。 由于是采样统计,所以不管 N 是 20 还是 8,这个基数都是很容易不准的。

修正统计信息

统计信息不对,那就修正。analyze table table_name 命令,可以用来重新统计索引信息。

是否使用前缀索引

前缀索引优势

使用前缀索引,定义好长度,就可以做到既节省空间,又不用额外增加太多的查询成本。
select count(distinct left(email,4))as L4, count(distinct left(email,5))as L5, count(distinct left(email,6))as L6, count(distinct left(email,7))as L7, from SUser;

前缀索引劣势

用前缀索引后,可能会导致查询语句读数据的次数变多。

对覆盖索引的影响

如果使用 index1(即 email 整个字符串的索引结构)的话,可以利用覆盖索引,从 index1 查到结果后直接就返回了,不需要回到 ID 索引再去查一次。
而如果使用 index2(即 email(6) 索引结构)的话,就不得不回到 ID 索引再去判断 email 字段的值。 即使你将 index2 的定义修改为 email(18) 的前缀索引,这时候虽然 index2 已经包含了所有的信息,但 InnoDB 还是要回到 id 索引再查一下,因为系统并不确定前缀索引的定义是否截断了完整信息。


http://www.ppmy.cn/devtools/24199.html

相关文章

Python自学篇3-PyCharm开发工具下载、安装及应用

一、Python开发工具 自学篇1中讲到了安装Python之后出现的几个应用程序,其中IDLE、Python.exe都可以用来编写python程序,也可以进行调试;但是比较基础,比较原始,调试不方便,界面也不友好,需要更…

验证码功能:kaptcha生成验证码

结合 kaptcha生成验证码功能。 kaptcha官网 导入jar包编写Kaptcha配置类生成随机字符、生成图片导包 <!-- https://mvnrepository.com/artifact/com.github.penggle/kaptcha --> <dependency><groupId>com.github.penggle</groupId><artifactId

细说温度测量-热电偶1

细说温度测量——热电偶1 四种现代温标的转换公式热电偶测量热电偶电压参比端基准电路 四种现代温标的转换公式 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ K ˚C 273.15 ˚R ˚F 459.67 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ˚C 5/9 (…

风丘电动汽车热管理方案 为您的汽车研发保驾护航

热管理技术作为汽车节能、提高经济性和保障安全性的重要措施&#xff0c;在汽车研发过程中具有重要作用。传统燃油汽车的热管理系统主要包括发动机、变速器散热系统和汽车空调&#xff0c;而电动汽车的热管理系统在燃油汽车热管理架构的基础之上&#xff0c;又增加了电机电控热…

2-token生成

Token是密码学中的一个概念&#xff0c;可以用作身份验证凭证。在计算机领域中&#xff0c;token可以是一个字符串&#xff0c;用于标识用户的身份和权限。当用户进行身份验证时&#xff0c;他们通常会收到一个token&#xff0c;以便在将来的请求中用作凭证。 在互联网应用程序…

剑指offer--调整数字顺序使奇数位于偶数前面

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有的偶数位于数组的后半部分. 算法分析 算法:利用快速排序的一次划分思想&#xff0c;后面的奇数往前移&#xff0c;前面的偶数往后移 时间复杂度 &#xff1a;O(n) 空间…

SpringCloud 之 服务提供者

前提 便于理解,我修改了本地域名》这里!!! 127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.com学习Rest实例之提供者 提供者模块展示 1、导入依赖 <!-- 实体类 Web--><dependency><groupId>com.jyl</groupId><…

Orange3数据可视化(箱线图-离散属性分布)

箱线图(Box Plot) 又称为盒须图、盒式图、盒状图或箱线图&#xff0c;是一种用作显示一组数据分散情况资料的统计图。因图形如箱子&#xff0c;且在上下四分位数之外常有线条像胡须延伸出去而得名 箱线图可以显示属性值的分布,快速发现异常,例如重复的值,离群值等,挖掘数据的…