面试(数据库的索引结构)

一、目标

数据库索引是为了方便检索数据;提升查询效率;我们通过数据结构的设计,减少遍历磁盘的次数;不同的索引结构适用于不同的场景

二、常用的索引结构

2.1、B+树(B+Tree):

B+树是在B-树基础上的改进版本,也是最常用的索引结构之一。B+树相比于B-树,将所有的数据都存储在叶子节点中,而非内部节点,提高了磁盘IO的效率。B+树的叶子节点通过指针连接起来,形成一个有序链表,可以支持范围查询和顺序访问。

2.2、Hash索引(Hash Index)

Hash索引是一种基于哈希表的索引结构,它通过将关键字通过哈希函数映射到一个固定的位置,并在该位置上存储数据的指针。Hash索引适用于等值查询,具有快速的查找速度。但是,Hash索引不支持范围查询和顺序访问。

这些索引结构在数据库中起到了加快数据检索的作用,通过选择合适的索引结构和建立适当的索引,可以提高数据库的查询效率。不同的索引结构适用于不同的场景,开发者需要根据具体的需求选择合适的索引结构。

三、如果优化查询

3.1、建索适合的索引

最左适配原则

3.2、避免全表扫描

避免深度分页

3.3、避免无用字段返回

3.4、优化sql

综上所述,查询优化需要综合考虑数据库的结构、索引、查询语句的编写方式、无效数据、业务逻辑等多个方面,通过合理的优化手段可以提高查询的速度和性能。

相关推荐
2401_850491655 分钟前
c++如何通过文件映射mmap在多进程间实现高性能数据共享【进阶】
jvm·数据库·python
iuvtsrt5 分钟前
PHP 中高效查找 CSV 行并获取前后指定偏移行的数据
jvm·数据库·python
m0_463672206 分钟前
MySQL从库出现大量锁等待怎么办_分析从库执行计划与锁日志
jvm·数据库·python
2301_809204708 分钟前
为 Go 语言 WaitGroup.Wait() 添加超时机制的实用方案
jvm·数据库·python
用户114896694410527 分钟前
Promise解析
javascript·面试
是桃萌萌鸭~32 分钟前
oracle的隐藏虚拟列详解
运维·数据库·oracle
2301_7796224133 分钟前
SQL分组聚合优化_GROUP BY索引与优化方案
jvm·数据库·python
m0_7407963638 分钟前
golang如何使用sync.WaitGroup_golang sync.WaitGroup并发等待使用方法
jvm·数据库·python
DianSan_ERP39 分钟前
抖店订单接口同步中如何解决订单漏单与数据一致性难题?
数据库
晚风予卿云月42 分钟前
【Linux】Linux2.6 O(1)调度器超详解 | 进程切换+内核链表 | 面试必背
linux·运维·面试