临汾市网站建设_网站建设公司_Photoshop_seo优化
2025/12/22 12:33:49 网站建设 项目流程

1. 区分度高的列放最左边(基本原则)

区分度(选择性)指的是列中不重复值的比例。区分度越高,索引过滤数据的效率越高。

原因:MySQL使用索引时遵循"最左前缀原则",最左边的列会先被用来过滤数据,如果这一列区分度高,能快速缩小数据范围。

正例说明:如果a列几乎是唯一值(如用户ID),单独建idx_a就够了,因为通过a已经能定位到极少量的数据,再加b列意义不大。

2. 等号条件列前置(重要例外)

当查询条件中同时存在等号(=)和**范围查询(>, <, BETWEEN)**时,必须把等号条件的列放在前面。

原因:

  • 索引的范围查询会导致后续列无法使用索引
  • 等号查询可以精确定位,不影响后续列的索引使用

示例对比:

-- 错误做法: idx_a_b (a, b)WHEREa>100ANDb='value'-- a使用了范围查询,b列索引失效-- 正确做法: idx_b_a (b, a)WHEREa>100ANDb='value'-- b先用等号精确匹配,然后a再做范围过滤,两列都能用上索引

总结规则优先级

  1. 等号 > 范围查询(有范围查询时,等号列必须前置)
  2. 区分度高 > 区分度低(都是等号或都是范围时,按区分度排序)
  3. 考虑最左前缀(要覆盖最常用的查询模式)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询