索引设计应遵循最优原则,基于数据特征与查询模式构建,以确保最高的检索效率。
一般情况下,索引设计遵循以下规则:
原则类别 | 具体原则 | 说明 | 案例/解释 |
---|---|---|---|
应创建 | 1. 选择唯一性索引 | 值唯一的字段能极速定位记录。 | 学号、身份证号等唯一字段。 |
2. 为排序、分组字段建索引 | 可避免 ORDER BY 、GROUP BY 、DISTINCT 、UNION 的耗时排序操作。 | 常用于排序的“创建时间”、用于分组的“部门ID”等。 | |
3. 为高频查询条件建索引 | 显著加速检索,提升整个表的查询性能。 | 用户表中“手机号”、订单表中“用户ID”等常用查询条件。 | |
应避免 | 4. 限制索引数目 | 索引越多,磁盘占用越大,数据插入/更新越慢,优化器选择负担越重。 | 只为最核心的查询需求建索引,删除无用索引。 |
5. 使用数据量少的索引 | 索引值越短,查询速度越快。 | 对 CHAR(100) 字段建索引,不如对其前10个字符(前缀索引)或哈希值建索引高效。 | |
6. 小表不建索引 | 数据量少时,全表扫描可能比遍历索引更快。 | 仅有几十条记录的配置表,无需建索引。 | |
需优化 | 7. 使用前缀索引 | 对长文本字段,只索引前一部分字符,以节省空间并提升效率。 | 对 TEXT 类型的“文章内容”字段,只索引前20个字符即可满足大部分模糊查询(LIKE 'prefix%' )。 |
8. 删除无效/低频索引 | 定期审查并删除不再使用或使用频率极低的索引,以减少维护开销。 | 因业务变更,旧的“渠道编号”索引不再使用,应及时删除。 |
总结:索引选择的最终目标是优化数据库系统的整体性能,其核心体现为提升查询速度,但同时也需全面考量其对系统其他方面的影响。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程