Mysql索引相关知识

MySql索引

数据库索引是一种提高数据查询效率的数据结构

数据结构示例地址:
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

  • 二叉树:
    这种数据结构,缺点是如果插入递增的数据,会导致整个结构一侧长度递增.
    数据结构演示地址:
    https://www.cs.usfca.edu/~galles/visualization/BST.html
  • 红黑树:
    而红黑树解决了这个问题,红黑树会再进行插入后,会对树结构进行重新绘制,这样就避免了二叉树的问题,但是红黑树也同样存在问题,就是当数据量较大时,树的结构会比较深,也会经过多次查找,导致查询效率也不高。
    数据结构演示地址:
    https://www.cs.usfca.edu/~galles/visualization/RedBlack.html
  • B-Tree:
    再一个层级中添加多个标记节点,这样可以减少数据层级。B-Tree的数据层级较少。
    数据结构演示地址:
    https://www.cs.usfca.edu/~galles/visualization/BTree.html
  • B+Tree
    B+Tree在B-Tree上再次进行优化,将所有数据都保存到叶子节点上,非叶子节点存储冗余索引。
    数据结构演示地址:
    https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html
    BTEE+索引
    中B+tree索引,一个节点中可以保存多个索引数据,中间用来保存下个索引的地址,索引节点中不保存数据,而所有数据都保存到内存中。这样可以加快节点的扫描速度。

MySql存储引擎

InnoDB存储引擎
InnoDB存储引擎数据存储分为两个文件*.frm,*.idb,frm存储数据结构,idb存储索引和数据。
InnoDB存储引擎中的主键索引叶子节点包含了完整的数据结构。而非主键索引的叶子节点中包含的是主键索引的叶子节点,主要是为了保持一致性和节省空间。
在这里插入图片描述

MyIsam存储引擎

MyIsam存储引擎采取的是数据和索引分离的,分为3个文件,.frm,.MYD,*.MYI,frm用来保存数据结构,MYD用来保存数据,MYI用来保存索引。
在这里插入图片描述
Myisam中不存在

总结:

1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
8、频繁进行数据操作的表,不要建立太多的索引;
9、删除无用的索引,避免对执行计划造成负面影响;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peter824

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值