SQL优化技巧 - 如何创建高效的索引
· 阅读需 19 分钟
Copyright © 2023 PawSQL
本文介绍索引创建时需遵循一些准则,以达到最佳的查询性能和数据维护效率。本文基于最常用的B+树索引来举例,其他索引的使用有一定的限制条件,具体请参考《数据库索引的类型》。
基于您的工作负载创建索引
创建高效的索引最重要的原则是,基于您的工作负载(workload)创建索引,而不是基于您的表结构。 索引的目的是为了提升数据库中操作的效率,因此任何其他不以工作负载出发的索引创建方法都是错误的。
针对数据库执行的所有 SQL 语句构成了该数据库的工作负载。在针对一个工作负载构建一组索引时,需要考虑工作负载的以下属性:
- SQL类型,用户执行频繁插入新数据和修改现有数据的OLTP场景,多个索引可能会对性能产生负面影响,并对系统资源造成压力,建议创建最少数量的索引来满足您的索引要求。而在 以查询为主的OLAP场景,您可以添加更多索引,每个索引具有多个键列,甚至可以添加函数索引和条件索引。
- SQL频率,最为最频繁使用的查询创建索引,通过为这些查询创建最好的索引,能够最大限度的提升系统的整体性能。
- SQL的重要性,查询越重要,您可能越想通过创建索引来进行性能优化。
- SQL的本身的结构。