• 问个数据库组合索引的问题
  • 发布于 3天前
  • 28 热度
    4 评论
关于数据库索引的一个问题:有复合索引建立于列 a,b,c。那么 where a=1 and b like b% and c=3 命中此索引吗? where a=1 and b > 2 and c=3 命中此索引吗?主要是 C 列还是否能使用此索引?
用户评论
  • 笑颜如初
  • 建议把索引建立为 a c b 的联合索引,至于有没有命中索引,你直接 EXPLAIN 分析下就能看到。sql 不熟,但是大体的意思是 and 会被优化成并列的,所以实际的搜索语句是 a=1 c=3 b like b%,所以为了能够用上所有索引字段,建议你把 c 放到 b 前面。
  • 2025/6/10 7:47:00 [ 0 ] [ 0 ] 回复
  • 清风挽发
  • 都能利用(a,b,c)中的前缀(a,b),如果(a,b)值分布很稀疏,是可以命中索引的,如果(a,b)很稠密,可能会走全表扫描,或者使用 c 索引(如果 C 是稀疏的,且建立了 c 索引或者(c,...)复合索引)。
  • 2025/6/10 7:37:00 [ 0 ] [ 0 ] 回复