数据库调优三-索引调优

一 索引类型

1.1 从数据结构角度

  • B-Tree,B+Tree索引
  • Hash索引
  • 空间索引(R-Tree)
  • 全文索引

1.2 从功能逻辑角度

普通索引

普通索引是基础的索引,没有任何约束,主要用于提高查询的效率
示例:

CREATE INDEX index_name ON table(column(length))
唯一索引

唯一索引就是在普通索引的基础上增加了数据唯一性的约束,索引列的值必须唯一,允许有null值。如果一个唯一索引同时还是个组合索引,那么表示列值得组合必须唯一;在一张表里可以有多个唯一索引
示例:

CREATE UNIQUE INDEX indexName ON table(column(length))
主键索引

主键索引是一种特殊的索引,不允许有null值,并且一张表最多只有一个主键索引

组合索引

指多个字段上创建的索引,使用组合索引时遵循最左前缀原则。
示例:

CREATE index index_name CREATE table (column1, column2);
全文索引

全文索引,用来检索文本中的关键字,用的很少,一般应对这种需求用Elasticserch或者solr之类的全文索引引擎
示例:

CREATE FULLTEXT INDEX ...

1.3 从物理存储角度

聚簇索引的叶子节点就是数据节点,而非聚簇索引的叶子节点不存储数据,而是指向对应数据块的指针。
Innodb的主键索引使用的是聚簇索引,而Myisam使用了非聚簇索引。

  • 聚簇索引:表数据和主键一起存储的,聚簇索引的数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对应的数据也一定是相邻的放在磁盘上。而由于无法同时把数据行同时存放在两个不同的地方,所以一张表只有一个聚簇索引。
    • 聚簇索引的二级索引:叶子节点不会保存引用的行的物理位置,而是保存行的主键值。
  • 非聚簇索引:叶子节点存储的是数据块的指针。表数据和索引分开存储。查询时,先找到索引,再根据索引找到对应的数据行

聚簇索引的优点:

  • 查找效率理论上要比非聚簇索引要高,但是插入修改,删除操作的性能比非聚簇索引要低
  • 范围查询方便

聚簇索引缺点:

  • 插入速度严重依赖于插入顺序,因此,对
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值