索引优化策略
来源:互联网 发布:大数据人才需求趋势 编辑:程序博客网 时间:2024/05/20 09:47
索引类型
1.B-tree索引
注:名叫btree索引,大的方面看,都用的平衡树,但具体的实现上,各引擎稍有不同,
比如,严格的说,NDB引擎,使用的是T-tree
Myisam,innodb中,默认用B-tree索引
但抽象一下---B-tree系统,可理解为”排好序的快速查找结构”.
2 hash索引
在memory表里,默认是hash索引, hash的理论查询时间复杂度为O(1)
hash函数计算后的结果,是随机的,如果是在磁盘上放置数据,
比主键为id为例,那么随着id的增长, id对应的行,在磁盘上随机放置.
左前缀原则
在多列上建立索引后,查询哪个列,索引都将发挥作用
误:多列索引上,索引发挥作用,需要满足左前缀要求.
以 index(a,b,c)为例,
filesort 二次排序
一般而言,分组统计要先按分组字段,有序排列
用临时表来排序
联合索引反而快了,主键索引反而慢了 ----》 聚簇索引,索引覆盖 , innodb与myisam索引的区别
innodb的次索引指向对主键的引用
myisam的次索引和主索引 都指向物理行
Myisam
存在物理行中。。。。。。
主键索引 普通索引
innodb的主索引文件上,直接存放该行数据,称为聚簇索引,次索引指向对主键的应用;
myisam中,主索引和次索引,都指向物理行
注意:innodb来说,
1:主键索引 既存储索引值,又在叶子中存储行的数据
2:如果没有主键,则会Unique key做主键
3:如果没有unique,则系统生成一个内部的rowid做主键.
4:像innodb中,主键的索引结构中,既存储了主键值,又存储了行数据,这种结构称为”聚簇索引”
高性能索引策略
0:对于innodb而言,因为节点下有数据文件,因此节点的分裂将会比较慢.
对于innodb的主键,尽量用整型,而且是递增的整型.
如果是无规律的数据,将会产生的页的分裂,影响速度.
实验innodb 顺序和乱序的执行效率
索引覆盖:
索引覆盖是指如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要回行到磁盘再找数据.
这种查询速度非常快,称为”索引覆盖”
如果有 Using index则说明是索引覆盖
innodb沿着主键走,因为是在叶子上,如果挂的数据比较多的情况下,查询数据跨的块太多,所以查询的比较慢,但是如果在innodb上是复合索引的话,id.ver 是二级索引,是次索引,所以是按照所以来走,因此查询的比较快,不是主键索引的话,就没有下面的数据块,只取id,不需要去id下面的数据。因为myisam是存在磁盘上,所以两者差别很小。
索引的长度和区分度是相互矛盾的,索引长度越长,区分度越高,所以应该,分析数据,寻找最合适的位置。
用crc函数来构造伪哈希列
把字符串的列,转成整形,来降低索引的长度,从而提高查询效率
阅读全文
0 0
- 查询优化策略---索引
- Mysql-索引优化策略
- mysql索引优化策略
- 索引优化策略
- 索引优化策略
- 索引优化策略
- mysql优化 索引优化策略
- 索引使用策略及优化
- InnoDB调优-索引优化策略
- 索引优化策略(1)
- B-Tree索引及索引优化策略
- mysql 优化(2)索引优化策略
- Oracle Index 索引介绍 及 优化策略
- 使用SQL Server DMVs优化索引策略
- mysql索引使用策略和优化
- Schema的优化和索引 - 高性能的索引策略
- 数据库索引跟B+Tree的关系,索引优化策略
- Schema的优化和索引 - 高性能的索引策略 - 索引和锁
- matlab版hog+svm图像二分类
- JavaScript中动态创建和操作select元素
- Awesome Semantic Segmentation
- java--数组篇
- google Guava包的ListenableFuture解析
- 索引优化策略
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- Makefile学习笔记2
- Android TextView属性大全
- n-皇后问题 算法代码
- 每日一题#10-22 Ransomware
- 【java练习】生成一张数独表吧!
- 自考总结