数据库索引

Posted gw977

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库索引相关的知识,希望对你有一定的参考价值。

什么是索引?

用于提高数据库访问速度的数据库对象

索引类型?

聚集索引:一个表中只有一个聚集索引,主键的存储位置与物理顺序相同,叶子节点获取全部列数据。

非聚集索引:索引逻辑顺序与物理顺序不同,可以有多个非聚集索引。=> 因此非聚集索引的叶子节点是索引节点,指针指向对应的数据块,若列中包含其他索引没有覆盖的列,就需要二次查找。=> 这种时候可以选用建立多列索引。

图:非聚集索引

技术图片

索引的类型:

a)      普通索引

b)      唯一索引:唯一,允许空值

c)      主键索引:唯一,不允许空值

d)      组合索引:多个字段上创建索引,查询条件中需使用创建的字段要符合最左前缀

e)      全文索引fulltext:搜索引擎,用来查找文本中的关键字。非结构化数据中的一部分信息重新提取、组织。

什么时候建立索引?

在经常需要搜索的列上、主键、连接的列、且是唯一性字段的列等上创建索引

能添加多少索引?

 

聚集索引:1个

非聚集索引:多个,SQL SERVER 254。

MYSQL创建索引的命令

普通索引 INDEX()  单列索引 INDEX [name]()

唯一索引 UNIQUE INDEX [name]()

多列索引 INDEX [name](col1, col2…)

全文索引 FULLTEXT INDEX

MYISAM支持空间索引SPATIAL INDEX

MYISAM VS INNODB

MYISAM 表级锁,索引和文件分离,缺乏事务支持

INNODB 行级锁,索引和文件一体,支持事务与外键

两个引擎各自的索引实现

MYISAM:叶子节点存放地址。

技术图片

INNODB:叶子节点保存完整的数据。必须要有主键(不同点)。辅助索引存储的是主键值,因此辅助索引需要检索两次 => 1. 获取主键 2. 检索主键

技术图片

 

以上是关于数据库索引的主要内容,如果未能解决你的问题,请参考以下文章

数据库表索引:普通索引唯一性索引全文索引多列索引隐藏索引删除索引

数据库索引有哪几种?怎样建立索引?

数据库基础:讲解MySQL索引的概念及数据库索引的应用[2]

Pandas中xs()函数索引复合索引数据的不同切面数据(索引复合索引中需要的数据):索引列复合索引中的一个切面索引行复合索引中的一个切面

达梦数据库索引实践

数据库怎样创建一个唯一聚集索引