数据库面试八股DAY3

1、数据库索引:索引是一种用于快速查询和检索数据的数据结构。

索引优点:使用索引加快数据的检索速度;索引保证数据库每一行数据唯一

索引缺点:(时间上)创建索引和维护索引需要耗费许多时间,对数据进行增删改的时候,索引也需要动态修改,降低SQL执行效率;(空间上)索引需要使用物理文件存储,耗费空间。

2、聚簇索引:索引结构和数据一起存放的索引。InnoDB中主键索引属于聚簇索引。对于InnoDB引擎表来说,该表的索引(实现是B+树)每个非叶子节点存储索引,叶子节点存储索引和索引对应的数据。

聚簇索引优点:查询速度快;对排序查找和范围查找优化

缺点:依赖于有序的数据;更新代价大

3、非聚簇索引:索引结构和数据分开存放的索引。二级索引属于非聚簇索引。MySQL的MyISAM引擎,主键和非主键使用的都是非聚簇索引。

非聚簇索引优点:由于叶子节点不存放数据,更新代价小。

缺点:依赖于有序数据;可能会二次查询,找到索引的指针和主键后再到数据文件或表中查询。

4、正确的使用索引建议:

选择合适的字段创建索引 例如:不为NULL的字段、被频繁查询的字段、被作为条件查询的字段、频繁需要排序的字段、被经常频繁用于连接的字段

被频繁更新的字段慎重建立索引:维护索引的成本过大。

限制每张表上的索引数量:MySQL优化器优化查询时如果评估到很多个索引都可以用于查询时,会增加优化器生成执行计划的时间,降低了查询性能。

尽可能建立联合索引而不是单列索引:索引占用磁盘空间,多个字段放在一个索引上可以节省磁盘空间,提升操作数据的效率。

避免创建冗余索引:索引功能相同,能够命中索引(a,b)就一定能命中索引(a)。大多数情况下,尽量扩展已有的索引不创建新索引。

字符串类型的字段使用前缀索引代替普通索引:前缀索引仅限于字符串类型,相比普通索引占用更小的空间。

参考借鉴:MySQL索引详解 | JavaGuide

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值