数据库索引的相关问题

为什么要使用数据库索引?

(1)在查询的时候,数据库索引可以大大提升读取速度。

(2)使用唯一索引的话可以保证表中每一行的独立性。

(3)可以加快表和表之间的相互连接。

(4)在进行分组和排序的时候,提高速度

缺点:索引也占用物理空间,当进行删除和修改的时候,也要进行数据库的维护。

索引的分类

唯一索引,非唯一索引,聚集索引,非聚集索引,全文索引,主键索引,组合索引。

聚集索引:表中记录的物理顺序与键值的索引顺序。InnoDB为聚集索引。在进行查找的时候非常高效,但是在进行删除和插入的时候,因为要维护B+树,索引不建议使用。

非聚集索引:表中记录的物理顺序与键值的索引顺序不一致。MyISAM为非聚集索引。在进行插入和删除的时候性能较好。

唯一索引:可以保证数据行的唯一性。

数据库的原理

数据库索引结构为B+树。不同的存储引擎对索引的实现方式是不同的

InnoDB是聚集索引。其叶子节点有自己的全部信息。其索引和数据在一起,没有分开。而MyISAM实现的是非聚集索引,其叶子节点保存了指向数据的指针,其索引和数据是分开的。

其InnoDB和myISAM的区别:

(1)InnoDB支持事务,其默认隔离级别是重复读。其myISAM不支持事务操作,但是其性能比较好,速度比较快。

(2)InnoDB允许有外键,MyISAM不允许有外键。

(3)InnoDB必须有主键,如果没有设置主键的话,InnoDB会自动生成自增主键。MyISAM允许没有主键。

(4)InnoDB是聚集索引,MyISAM是非聚集索引。

(5)InnoDB默认使用的是行级锁,但是也可以是表级锁。MyISAM的锁为表级锁,在插入和删除的时候比较不方便。

(6)在进行行数统计的时候,因为InnoDB没有保存总行数,所以要一个一个进行扫描。但是MyISAM拥有计数器,保存了总行数。

什么情况下索引会失效:

(1)当时字符串类型,不加引号时

(2)在索引列上进行计算和调用函数

(3)但or语句两边没有同时使用索引时。

(4)用like进行左模糊的时候,要进行全表扫描。

(5)当组合索引没有使用第一部分的索引时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值