博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高性能MySQL中的三星索引
阅读量:4977 次
发布时间:2019-06-12

本文共 889 字,大约阅读时间需要 2 分钟。

高性能MySQL中的三星索引

我对此提出了深深的疑问:

一星:相关的记录指的是什么??(相关这个词很深奥,“相关部门”是什么部门)

二星:如果建立了B-Tree(B+Tree)索引,数据就有序了。

三星:索引的列包含了查询需要所有的列?根本不需要在where查询条件所有的列上建立索引!

我认为一星和二星的rows应该是columns,索引不关具体的数据行,只与查询的列有关。这样也与High Performance MySQL 后面提到的多列索引的观点相符合,特别是二星评估。

个人的观点:

评估一个索引是否适合某个查询的“三星系统”(three-start system):

一星:索引将相关的列放到一起,即在一系必要的列上建立索引,不必为在where条件里面的列都建立索引。 
二星:索引中的数据列顺序和查找中排列顺序一致。通常将选择性最高的列放到索引的最前列。
三星:索引中的列包含了查询中需要的全部列。索引包含查询所需要的数据列,不再进行全表查表(聚簇索引、覆盖索引)。

 

参考资料:

《高性能MySQL》中文第三版

《High Performance MySQL (3rd Edition)》英文第三版

 

SQL量化方法

u  CASE 3:三星索引(lname,city,fname,cno)
RT = 1 * 10ms + 1000*0.1ms = 0.1 s
一次随机读取,1000次行扫描
u  CASE 4:二星索引(lname,city,fname)
RT = 1 * 10ms + 1000 * 0.1ms + 1000 * 10ms= 10.11s
一次随机读取,1000行扫描,1000次随机IO
u  CASE 5:一星索引(lname,city)
RT= 1 * 10ms + 1000 * 0.1ms + 1000 * 10ms + 1000 * 0.01ms=10.12s
一次随机读取,1000行扫描,1000次随机IO,1000行排序

 

转载于:https://www.cnblogs.com/MYSQLZOUQI/p/4573293.html

你可能感兴趣的文章
在生产环境使用Docker部署应用
查看>>
tween.js
查看>>
bzoj 5287: [Hnoi2018]毒瘤
查看>>
AtCoder Grand Contest 006 F - Blackout
查看>>
Win CE 6.0 获取手持机GPS定位1----基础知识 (C#)
查看>>
Typora 自定义主题 修改左右间距
查看>>
Js循环绑定checkBox
查看>>
day20 Python 实现的广度优先搜索实现迷宫算法
查看>>
遍历树形结构的所有叶子节点中特定属性值,并且放入一个数组中
查看>>
新的开始
查看>>
go语言实战教程:Redis实战项目应用
查看>>
设计模式之Singleton
查看>>
你知道吗?洗发水也会让人变胖!
查看>>
Oracle数据表中的死锁情况解决方法
查看>>
Synchronized vs SyncRoot
查看>>
JDK8 下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html...
查看>>
face detection[SSH]
查看>>
【康托展开】
查看>>
DevExpress14.1.2 xe XE6 高速安装
查看>>
《设计模式》组合模式---伊利工厂
查看>>