索引

什么是索引?

索引是为了加速对表中数据进行检索而创建的一种分散存储的数据结构。
在这里插入图片描述

索引的作用:

在数据库系统中建立索引主要有以下作用:
(1)快速取数据;
(2)保证数据记录的唯一性;
(3)实现表与表之间的参照完整性;
(4)在使用ORDER by、group by子句进行数据检索时,利用索引可以减少排序和分组的时间。

索引类型:

最常见的索引是Btree索引和Hash索引。凡是用----B-tree系统,可理解为“排好序的快速查找结构”。
BTree索引是最常用的mysql数据库索引算法,因为它不仅可以被用在=,>,>=,<,<=和between这些比较操作符上,而且还可以用于like操作符,只要它的查询条件是一个不以通配符开头的常量。
Hash索引只能用于对等比较,例如=,<=>(相当于=)操作符。可以一次访问到需要查找的数据,。

不同的引擎对于索引有不同的支持:Innodb和MyISAM默认的索引是Btree索引;而Mermory默认的索引是Hash索引。
在这里插入图片描述
在这里插入图片描述

索引的创建规则

1.选择唯一性索引(主键、外键)
2.为经常需要排序、分组和联合操作的字段建立索引
经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为其建立索引,可以有效地避免排序操作。
3.为常作为查询条件的字段建立索引(where语句后面的字段)
4.限制索引的数目
当对表进行增、删、改操作时需要对表的索引进行整理,越多的索引,会使更新表变得很浪费时间。
5.尽量使用数据量少的索引
如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。
6.尽量使用前缀来索引
如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,字符的数量要能匹配到99左右。
7.删除不再使用或者很少使用的索引
8 . 最左前缀匹配原则,非常重要的原则。
如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整,否则应使用概率最大的字段索引排序越靠前。
在这里插入图片描述
9 .=和in可以乱序。
10 . 尽量选择区分度高的列作为索引
比如每个id只有与之匹配的一条记录。
11 .不在索引上做任何操作(如计算、函数、(自动or手动)类型转换),可能导致索引失效
12、尽量使用覆盖索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值