当前位置: 首页 > news >正文

MySQL八股之数据库索引优化:7个关键注意事项

1、在WHERE中使用不到的字段,不设置索引

WHERE条件,包括ORDER BY和GROUP BY里使用不到的字段不需要设置索引,因为索引的价值是快速定位,如果起不到定位的字段通常是不需要设置索引的。

2、数据量小的表不设置索引

表的记录过少(例如小于1k)也不需要创建索引。因为这时候是否创建索引对于查询效率的影响并不大,甚至查询所花的时间还比遍历索引时间更短,索引此时就不会产生优化效果。

3、有大量重复数据的列上不要设置索引

在条件表达式中经常用到的不同值较多的列上创建索引,但是字段中如果存在大量重复数据(比如高于10%),就不要建立索引。例如学生表的性别字段,只有男和女两个值,因此无需建立索引。因为有索引的情况下不但不会提高查询效率,反而会严重降低数据更新速度。

4、避免对经常更新的表创建过多的索引

频繁更新的字段不一定要创建索引,因为更新数据的时候也要更新索引,如果索引太多,在更新索引的时候也会造成负担,从而影响效率。避免对经常更新的表创建过多的索引,并且索引中的列尽可能少,此时虽然会提高查询速度,但是会降低更新表的速度。

5、不建议用无序的值作为索引

一些字段例如身份证、MD5、HASH、UUID(在索引比较的时候需要转换为ASCII),并且插入的时候可能会导致页的分裂

6、删除不再使用或者很少使用的索引

表中的数据被大量更新,或者数据的使用方式被改变后,原来的一些索引方式可能不再需要,数据库管理员应当定期找出这些索引,并删除他们,以减少索引对更新操作的影响。

7、不定义冗余或者重复的索引

(1)冗余索引

有时候会对同一个列创建了多个索引,例如:index(a,b,c)就相当于index(a)、index(a,b)、index(a,b,c);如果已经创建了a、b、c的联合索引,又创建了a的单列索引就产生了冗余。

(2)重复索引

CREATE TABLE repeat_index_demo ( col1 INT PRIMARY KEY, col2 INT, UNIQUE uk_idx_c1 (col1), INDEX idx_c1 (col1) );

对col1字段就存在重复索引,它既是主键,又给定义了唯一索引和普通索引,但是主键本身就会生成聚簇索引,因此唯一索引和普通索引是重复的。

http://www.jsqmd.com/news/799676/

相关文章:

  • 避坑指南:用Systemback给Ubuntu 18.04做系统备份,为什么物理机还原会失败?
  • RealSense D435深度图像有黑洞?别急着返修,试试这个动态校准工具(Target vs Targetless模式详解)
  • Cursor AI编程助手定制化规则:用MDC文件提升代码生成质量与一致性
  • USB 2.0合规性测试全解析:从原理到实践
  • 别再画PPT了!用Mermaid语法在Markdown里画UML图,效率翻倍(附VSCode插件推荐)
  • Google 发布 Fitbit Air 无屏手环,AI 助力无屏手环品类“起死回生”
  • 告别手动下载:用Python脚本自动化抓取HITRAN光谱数据库(附完整代码)
  • 从M1到DESFire:ISO14443协议卡家族的技术演进与安全实践
  • 5分钟掌握暗黑破坏神2存档编辑器:网页版d2s-editor完全指南
  • 数据库和数据仓库的区别
  • 从巴克码到m序列:二相编码脉冲压缩的工程实现与性能权衡
  • AI编程工程化实践:promptsLibrary配置库实现TDD与多代理协作
  • 基于Claude的代码工作流引擎:从AI对话到工程化自动编程
  • 2026最权威的降重复率网站推荐榜单
  • 5G手机省电的秘密:BWP动态带宽切换实战解析(附核心参数配置避坑指南)
  • Mac上如何用DistroAV插件实现无线多机位直播:NDI技术完整指南
  • 量子纠错中的表面码预解码器与噪声学习架构
  • 基于agents框架构建AI智能体:从单智能体问答到多智能体协作系统
  • Cairn CSS框架:轻量级实用优先工具集的设计哲学与工程实践
  • 【网络安全】什么是漏洞扫描?有哪些功能?
  • Java Arrays.fill() 二维数组初始化:从基础用法到高级场景的深度解析
  • SV协议深度解析:从标准演进到报文结构的智能电网通信基石
  • 3大核心模块+5步实战指南:Betaflight飞控固件深度解析与配置方案
  • 深度解析:Mermaid实时编辑器架构设计与工程实践指南
  • 手把手教你为腾讯IM语音通话添加原生级体验:铃声、震动与悬浮窗实现详解
  • AI原生开发环境配置指南:从Cursor IDE智能体集成到MCP服务器应用
  • wxauto终极指南:三步实现Windows微信自动化,告别重复操作!
  • COMB模块化蜜蜂机器人平台:生物行为研究的创新工具
  • 基于DGX OpenClaw Stack构建本地AI智能体:从硬件调优到生产部署
  • Vite+React+TypeScript构建个人作品集网站:从技术选型到GitHub Pages自动化部署