我们在日常的数据库优化中,通过索引来优化往往是最常用最方便的方法,没有之一,而且也很有效。如何建一个高性能的索引呢?
三星索引系统的概念是 在《Rrelational Database Index Design and the optimizers》 一书中提出来的。原文如下:
The index earns one star if it places relevant rows adjacent to each other,
a second star if its rows are sorted in the order the query needs,
and a final star if it contains all the columns needed for the query.
大意如下:
索引将相关的记录放到一起则获得一星;
如果索引中的数据顺序和查找中的排列顺序一致则获得二星;
如果索引中的列包含了查询中需要的全部列则获得三星;
我对一星的理解:
1、大家都知道数据库存放数据的最小单位是页(oracle 中叫 “块”),大小一般为 16K(oracle 中默认大小为 8K),所以这些页中能存放的数据是有限的,如果我们的索引长度很小,那么在一页中能存放更的索引数据,在查询时需要请求的IO次数也更少。
2、索引在逻辑上是有序的。对于 where 中我们经常使用多个条件来查找我们需要的数据,这时我们往往会建一个多列的复合索引,但这个复合索引相关列的顺序比较讲究。一般我们把选择性高的列放在前面,把范围查询的字段放在后面,这样仅需要扫描更少的索引就能定位我们想要的数据。
我对二星的理解:
在满足一星的情况下,当查询需要排序,group by 、 orderb y ,如果查询所需的顺序与索引是一致的(索引本身是有序的),是不是就可以不用再另外排序了,一般来说排序可是影响性能的关键因素。
我对三星的理解:
在满足了二星的情况下,如果索引中所包含了这个查询所需的所有列(包括 where 子句 和 select 子句中所需的列,我们一般叫作复盖索引),这样一来,查询就不再需要回表了,减少了查询的步骤和IO请求次数。
注:三星索引就是最好的索引,我们在优化SQL建索引时,尽量向三星索引靠拢。
三星索引系统
来源:这里教程网
时间:2026-03-01 12:04:09
作者:
编辑推荐:
- 三星索引系统03-01
- mysql select count(*) 导致CPU使用率上升03-01
- MySQL线程状态详解03-01
- 手动注册binlog文件造成主从异常03-01
- Generated Columns + index 代替函数索引03-01
- MySQL 亿级数据数据库优化方案测试-银行交易流水记录的查询03-01
- MySQL高可用方案MHA的部署和原理03-01
- 云吞铺子:RDS for MySQL CPU性能问题分析第一篇03-01
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 三星索引系统
三星索引系统
26-03-01 - 手动注册binlog文件造成主从异常
手动注册binlog文件造成主从异常
26-03-01 - MySQL高可用方案MHA的部署和原理
MySQL高可用方案MHA的部署和原理
26-03-01 - 云吞铺子:RDS for MySQL CPU性能问题分析第一篇
云吞铺子:RDS for MySQL CPU性能问题分析第一篇
26-03-01 - 3ds max制作立体效果的角斗士之王
3ds max制作立体效果的角斗士之王
26-03-01 - mysql用户创建
mysql用户创建
26-03-01 - 怎样通过以太网远程访问PLC 较简单的方法
怎样通过以太网远程访问PLC 较简单的方法
26-03-01 - mysql审核平台yearning及inception安装
mysql审核平台yearning及inception安装
26-03-01 - MySQL高可用方案MHA在线切换的步骤及原理
MySQL高可用方案MHA在线切换的步骤及原理
26-03-01 - 一条SQL语句在MySQL中如何执行的
一条SQL语句在MySQL中如何执行的
26-03-01
