数据库索引为什么能加速查询,却可能拖慢写入并误导优化判断
简答题中等449 次浏览
参考答案与解析
# 核心结论
数据库索引是用额外存储空间和写入维护成本换取特定数据访问路径的数据结构。索引能够减少查询需要扫描的数据页,还可能直接支持排序、连接和覆盖读取;但每次插入、删除以及索引列更新都可能修改多个索引,引入日志写入、页分裂、缓存占用和锁竞争。因此,索引并非越多越好,其价值必须结合过滤选择性、返回行数、联合列顺序、排序方式、数据分布和真实执行计划判断。
# 底层机制
常见关系数据库使用平衡树类结构建立有序索引。内部节点保存分隔键和子页引用,叶子节点保存索引键以及行定位信息,或者在聚簇组织中直接保存数据行。由于树高通常较低,等值查询和范围查询可避免扫描整张表。哈希类索引适合等值定位,但通常不能提供有序范围扫描和排序能力
