数据库的索引

目录

一、为什么要用索引

二、什么时候才用索引

三、创建删除索引

1)创建索引

2)删除索引

四、索引分类

1)按数据结构分类

1.B+树索引

2.Hash索引

3.全文索引(倒排索引)

4.R树空间索引

2)按字段个数分类

1.单列索引

2.组合索引(复合索引、联合索引)

3)按物理存储分类

1.聚簇索引

2.非聚簇索引(二级索引、辅助索引)

五、索引失效

1)Like

2)or

3)索引列计算,不走索引

4)索引列用函数,不走索引

5)索引列用!=,不走索引

六、索引的存储结构

1)概述

2)聚集索引存储结构的例子

3)聚集索引和非聚集索引存储结构的综合例子

4)索引回表

1.定义

2.例子

3.解决办法

5)索引覆盖


一、为什么要用索引

索引就好比是一本书的目录,能快速定位数据。为了提高查询效率,减少查询时间

二、什么时候才用索引

1.数据量庞大;

2.经常出现在where的后面,以条件的形式存在,也就是说这个字段总是被扫描;

3.该字段很少DML(insert delete update)操作(因为DML之后,索引需要重新排序。索引越多,增删改越慢);

注意:建议不要随意添加索引。索引也是需要维护的,太多的话反而会降低系统的性能。

三、创建删除索引

1)创建索引

创建主键索引:创建或设置主键字段时,自动创建索引

创建唯一索引:create unique index 索引名 ON 表名(字段);

创建普通索引:
create index 索引名 on 表名(字段);   //索引创建在字段上

alter table 表名 add index 索引名(字段);  //修改表时添加

创建组合索引:create index 索引名 on 表名(字段1,字段2);

2)删除索引

drop index 索引名 on 表名;

四、索引分类

1)按数据结构分类

1.B+树索引

二叉树:完全二叉树 、满二叉树 、二叉搜索树(又叫二叉排序树、二叉查找树) 、平衡二叉树 ( 又叫AVL树)、红黑树、堆、哈夫曼树(又叫最优二叉树)、线索二叉树

多叉树:B树(又叫多路平衡查找(搜索)树)B+树B*树)

2.Hash索引

mysql的Memory存储引擎,默认是 Hash索引。

3.全文索引(倒排索引)

使用like '%xxx%'进行模糊查询时,字段的索引就会失效。因此,在数据量大的情况下,通过此种方式查询的效率极低。这个时候,就可通过全文索引(Full-Text Search)来进行优化。

全文索引主要对字符串类型建立基于分词的索引,只有char、varchar,text 列上可以创建全文索引,以便能够更加快速地查询数据量较大的字符串类型的字段。

注意,MySQL 5.6之前,只有MyISAM支持全文索引。MySQL 5.6后MyISAM、InnoDB都支持。

使用语法可以参考:mysql全文索引_明豆的博客-CSDN博客_mysql全文索引

4.R树空间索引

对空间数据类型的字段建立的索引。空间索引只能在存储引擎为myisam的表中创建,mysql中的空间数据类型有4种,分别是geometry、point、linestring、polygon。创建空间索引的列,必须将其声明为not null

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值