MySQL索引的三星评估(three-star system)
来源:互联网 发布:怎么查笔记本的mac地址 编辑:程序博客网 时间:2024/06/06 02:39
在《高性能MySQL》中文第三版提到了索引的评估:三星评估(three-star system)。
在《High Performance MySQL (3rd Edition)》英文第三版的原文是:
Lahdenmaki and Leach’s book also introduces a three-star system for grading how suitable an index is for a query.
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.
这段话理解起来很费解,第三版的中文翻译也不好理解:
索引将相关的记录放到一起获得一星;
如果索引中的数据顺序和查找中的排列顺序一致获得两星;
如果索引中的列包含了查询中需要的全部列则获得三星;
个人表示中文和英文都很理解(难道语文和英语都是数学老师教的,^...^)。
我对此提出了深深的疑问:
一星:相关的记录指的是什么??(相关这个词很深奥,“相关部门”是什么部门)
二星:如果建立了B-Tree(B+Tree)索引,数据就有序了。
三星:索引的列包含了查询需要所有的列?根本不需要在where查询条件所有的列上建立索引!
我认为一星和二星的rows应该是columns,索引不关具体的数据行,只与查询的列有关。这样也与High Performance MySQL 后面提到的多列索引的观点相符合,特别是二星评估。
个人的观点:
评估一个索引是否适合某个查询的“三星系统”(three-start system):
一星:索引将相关的列放到一起,即在一系必要的列上建立索引,不必为在where条件里面的列都建立索引。
二星:索引中的数据列顺序和查找中排列顺序一致。通常将选择性最高的列放到索引的最前列。
三星:索引中的列包含了查询中需要的全部列。索引包含查询所需要的数据列,不再进行全表查表(聚簇索引、覆盖索引)。
参考资料:
《高性能MySQL》中文第三版
《High Performance MySQL (3rd Edition)》英文第三版
- MySQL索引的三星评估(three-star system)
- 索引的三星系统
- MySQL 更新走全表和索引的评估记录数
- Three.js入门——画星空(star field)
- elasticSearch 批量添加索引的数量 Star.hou
- 三星Android210评估板Android4.0源码
- GD Star Rating的widget停留在 loading...或a WordPress rating system
- (Mysql 四)普通索引(BTREE索引)的使用
- 高性能的MySQL(5)索引策略一聚簇索引
- 高性能的MySQL(5)索引策略一聚簇索引
- MySQL BTree索引和hash索引的区别(转)
- MySQL的btree索引和hash索引(张高伟)
- Mysql索引的优化分析-索引优化(1)
- Linux System Programming --Chapter Three
- operating system:three easy pieces
- Unity教程之-制作闪亮的星星Star(三):给Star创建Unity Editor编辑器
- 电视广告时段的收视率评估工具(CPRP Table评估)
- mysql的索引使用(一)
- iOS 如何在一个应用程序中调用另一个应用程序
- dbcp 连接池问题
- 一步步构建大型网站架构
- 【模式识别】OpenCV中使用神经网络 CvANN_MLP
- git常用命令
- MySQL索引的三星评估(three-star system)
- QML学习文档
- [转帖]知识型员工的激励方式
- 从数据库查询到一条记录,在select中设置默认值
- matlab基本文件操作
- DOS命令之netstat
- 单测
- ./configure时提示错误 configure: error: no acceptable C compiler found in $PATH
- WIFI无线网络2.4G(2.4GHz)频谱各信道及对应频率