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

3-003:在 MySQL 中建索引时需要注意哪些事项?

在 MySQL 中创建索引时,需要注意以下事项,以确保索引高效且合理:

1. 选择合适的索引类型

  • 主键索引(PRIMARY KEY):每个表只能有一个,默认是聚簇索引。
  • 唯一索引(UNIQUE):确保列中的数据唯一。
  • 普通索引(INDEX):加快查询速度,但不保证唯一性。
  • 全文索引(FULLTEXT):用于全文搜索(仅适用于 MyISAMInnoDB)。
  • 前缀索引(PREFIX):对长字符串列,索引前几个字符可节省存储空间。

2. 避免过多索引

  • 索引会加快查询,但增加存储占用,降低插入、更新、删除性能
  • 仅对高频查询WHERE 条件列JOIN 关联列建立索引。

3. 选择合适的列建立索引

  • 选择高选择性列(如 idemail),避免低选择性列(如 gender 只有男/女)。
  • 索引长度尽量短,对长字符串可以用前缀索引
  • 避免对 BLOB、TEXT 建索引,可以用 VARCHAR(N)

4. 使用联合索引(复合索引)

  • 最左匹配原则:MySQL 使用索引时,从左到右匹配索引字段。
  • 避免冗余索引:不要建立功能重复的索引,如 (a, b)(a),后者是冗余的。
  • 考虑索引顺序:常用于查询的列放前面,如 WHERE a = ? AND b = ?,则索引 INDEX(a, b) 更有效。

5. 避免索引失效

  • 避免函数操作WHERE LEFT(name,3) = 'abc' 会导致索引失效。
  • 避免隐式类型转换WHERE phone = 123456,若 phoneVARCHAR,索引失效。
  • 避免 OR 语句WHERE a = 1 OR b = 2,MySQL 可能不会使用索引。

6. 监控索引使用情况

  • 使用 EXPLAIN SELECT ... 查看查询是否走索引。
  • SHOW INDEX FROM table_name; 查看表的索引情况。
  • ANALYZE TABLE table_name; 更新索引统计信息。

总结:合理设计索引,遵循最左匹配,避免冗余索引,优化索引长度,关注查询模式,并定期分析索引使用情况,才能让索引真正提高 MySQL 性能。🚀

相关文章:

  • 力扣第585题
  • harmony OS NEXT-音频录制与播放模块
  • 自动同步多服务器下SQL脚本3.0
  • Redis--List类型
  • C/C++中对字符处理的常用函数
  • AutoGen智能体代码解读
  • [Ai 力扣题单] 数组基本操作篇 27/704/344
  • 4.Kettle调度oracle任务设置邮件预警功能
  • 解决ElementPlus对话框el-dialog中关闭事件重复触发问题
  • Android Retrofit 请求执行模块执行原理深入源码分析(三)
  • 力扣hot100二刷——链表
  • Pac-Man(吃豆人) 游戏
  • Redis 缓存数据库
  • Node.js:快速启动你的第一个Web服务器
  • 考研数学非数竞赛复习之Stolz定理求解数列极限
  • IP 地址
  • 跳表数据结构
  • 大数据学习(63)- Zookeeper详解
  • 索引-最左匹配
  • 【项目设计】基于AMQP协议实现的简单消息队列
  • 广西干旱程度有所缓解,未来一周旱情偏重地区降水量仍不足
  • 北汽蓝谷一季度净亏损9.5亿元,拟定增募资不超60亿元
  • 十大券商看后市|A股风险偏好有望边际改善,市场仍处黄金坑
  • 经济日报:多平台告别“仅退款”,规则调整有何影响
  • 海南旅文局通报游客入住酒店港币被调包:成立调查组赴陵水调查
  • 最高法报告重申保护创新主体权益:加大侵权损害赔偿力度