我们在日常的数据库优化中,通过索引来优化往往是最常用最方便的方法,没有之一,而且也很有效。如何建一个高性能的索引呢?

三星索引系统的概念是 在《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建索引时,尽量向三星索引靠拢。

mysql 三星索引_三星索引系统相关推荐

  1. 数据库mysql的索引_数据库索引

    数据库索引 编辑 锁定 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信 ...

  2. mysql创建非聚集索引_聚集索引和非聚集索引的区别

    作者:riemann riemann.blog.csdn.net/article/details/90324846 一.深入浅出理解索引结构 实际上,可以把索引理解为一种特殊的目录.微软的SQL SE ...

  3. mysql 左连接 怎么走索引_数据库索引、左连接、右连接、等值连接

    在MySQL中,主要有四种类型的索引,分别为:B-Tree索引,Hash索引,Fulltext索引(MyISAM 表)和R-Tree索引,本文讲的是B-Tree索引. 一.Mysql索引主要有两种结构 ...

  4. mysql实现位图索引_位图索引,数据库索引浅浅的学习

    位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣.说来惭愧,在这之前对位图索引一无所知,因此趁此机会写篇博文介绍下位图索引. 1. 案例 有张表名为ta ...

  5. MySQL联合索引原理_复合索引_组合索引_多列索引

    文章目录 联合索引原理示意图 联合索引就是复合索引.组合索引.多列索引. 联合索引原理示意图

  6. MySQL离散型_数据库索引之离散度

    创建索引的目的是快速从整体集合中选择性地读取满足条件的一部分集合.在查询条件中既有对缩减查询范围起主要作用的驱动查询条件,也有单纯起检验作用的过滤查询条件,数据库将全部满足这两种查询条件的最终结果输出 ...

  7. access建立两个字段唯一索引_数据库索引原理及优化

    微信公众号:云计算通俗讲义 持续输出技术干货,欢迎关注! 通过本文你将了解: 概述 分类 索引底层实现原理 基本操作 索引失效 索引优化 01 概述 索引是帮助MySQL高效获取数据的排好序的数据结构 ...

  8. python中双向索引_对索引Include子句的深入分析

    翻译:陈雁飞  校对:李冉 作者简介 Markus Winand专注于传授高效的SQL技巧,有面授和网络课程两种.他使用现代SQL方法大大减少了开发时间,并且通过智能索引优化SQL运行时间.编写的&l ...

  9. 联合索引会创建几个索引_联合索引在B+Tree上的存储结构及数据查找方式

    来源:SegmentFault 思否社区作者:木子雷 前言: 本篇文章主要是阐述下 联合索引 在 B+Tree 上的实际存储结构. 本文主要讲解的内容有: 联合索引在B+树上的存储结构 联合索引的查找 ...

  10. 联合索引会创建几个索引_联合索引在B+树上的存储结构及数据查找方式

    能坚持别人不能坚持的,才能拥有别人未曾拥有的. 关注编程大道公众号,让我们一同坚持心中所想,一起成长!! 原文首发于该公号,欢迎关注 引言 上一篇文章<MySQL索引那些事>主要讲了MyS ...

最新文章

  1. 导入Flex/Flash项目后的一个简单错误:无法创建 HTML 包装器
  2. LeetCode114. 不同的路径 python实现
  3. C语言dijkstra最短距离的算法(附完整源码)
  4. @responseBody注解的使用
  5. python until语句_详解Lua中repeat...until循环语句的使用方法
  6. 计算机考研分数2019,2019考研分数线和国家线有什么关系
  7. python你会吗_Python这些问题你会吗?
  8. linux中将 home目录备份成,6种优化Linux系统备份的应用与技巧
  9. 非结构化数据与结构化数据提取---- BeautifulSoup4 解析器
  10. 免费下载谷歌maps软件_Android Google Maps示例教程
  11. 人工智能学习该读哪些书籍?
  12. 报错ValueError: check_hostname requires server_hostname
  13. 智慧校园整体解决方案
  14. 网易云音乐直链提取及下载
  15. 高中数学建模优秀论文_数学建模论文 高中数学建模经典例题
  16. cisco防火墙(Cisco防火墙型号asa)
  17. CATIA V6二次开发——复杂装配体的结构树遍历
  18. 应该如何写详细设计文档
  19. 8芯网线中哪几根是有用的?
  20. 林亦杉厦门大学计算机学院,郑州外国语学校319名学生被名校提前录取

热门文章

  1. ios8 xcode设置launchimage
  2. jacob 插入水印方法整理
  3. 实现1.1、1.1.1的多级编号文档排版
  4. 百度地图api-个性化地图-主题更换
  5. 【错误解决】Ubuntu20.04安装输入法遇到的问题
  6. python卸载清理注册表_使用Python操作注册表
  7. 轻松插入Word页眉页脚
  8. 计算机英语单词怎么巧背,巧计英语单词的26个秘诀
  9. apng2gif各种问题的解决
  10. 无线网Wifi和WLAN的区别