mysql索引
来源:互联网 发布:免费视频字幕制作软件 编辑:程序博客网 时间:2024/05/22 13:31
索引是什么?
mysql官方对索引的定位为:索引是帮助mysqlk高效获取数据的数据,可以得到索引的本质:索引是数据结构。
索引可以简单理解为“排好序的快速查找数据结构”
索引的目的在于提高查询效率。在查询‘mysql’这个字符串的时候,如果是排序好的,先定位到m字母,然后在m的区间找y....如果未排序的,那么每次都是要扫描全部数据来定位一次。
所以可以理解为‘排好序的快速查找数据结构’。从这句话也可以得到,索引用于排序和快速查询。所以会影响到where后面的查找条件和order By 后面的排序字段。
在数据之外,数据库还维护这满足特定查询算法的数据结构,这些数据结构以某种方式的指向数据,这样就可以在这些数据结构上实现高级查询算法,这种数据结构,就是索引,对应到 java B树
下图演示,1,2,3,4,5.。是数据内容 col2加了索引的字段,右边的树形结构就是索引系统,通过索引系统能快速定位到数据内容的地址。
数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。
一般来说,索引本身也很大。不可能全部存储在内容中,因此,索引往往以索引文件的形式存储在磁盘上。
优势:提高数据检索的效率,降低数据库的io成本
通过索引对数据的排序,降低排序成本,降低cpu的消耗
索引的分类:
1.单值索引:一个索引只包含一个单列,一个表可以有多个单值索引。
2.唯一索引:索引列的值必须唯一,允许为空(银行系统的银行卡号)
3.复合索引:一个索引包含了多列。
mysql索引结构:
1.BTree树
2.hash索引
3.full-text索引全文索引
4.r-tree索引
后三种知道即可,和开发相关是第一个 BTree树索引。
那些情况下需要建立索引:
1.主键自动递增,建立唯一索引
2.频繁作为查询字段的条件应该建立索引
3.查询中与其他表关联的字段,外键关系的字段
4.频繁更新的字段不适合建立索引,每次更新还会更新索引树。
5.where条件中,用不到的字段不用创建索引
6.查询中排序的字段可以建立索引,大大加快排序速度。
7.查询中统计或者分组的字段。
mysql 300w左右开始性能下降,虽然官方说5-8百万左右
- MySQL索引 聚集索引
- mysql 索引 & 索引类型
- MySQL索引 聚集索引
- mysql 索引 & 索引类型
- mysql索引
- mysql索引
- mysql 索引
- MySql索引
- Mysql索引
- mysql 索引
- mysql 索引
- MySQL索引
- mysql索引
- mysql 索引
- mysql索引
- mysql 索引
- MySQL索引
- mysql索引
- hdu1385
- Tomcat 设置外网访问
- linux socket 编程(C语言)
- 51nod 1126 求递推序列的第N项(循环节)
- 动态规划8:斐波那契数列
- mysql索引
- 网络编程 笔记(二) 基于 Windows简单通信
- 动态规划9:跳台阶问题
- 从技术到逻辑,技术逻辑分离实践
- 解释 Neural Network 的 Output 公式
- C语言学习历程——Training01整数算法训练02
- Linux磁盘管理
- 动态规划10:变态跳台阶
- 互斥量mutex