全栈开发
数据库
【Q342】`A, B` 复合索引时,`A=? and B=?` 与 `B=? and A=?` 效果是否一致

A, B 复合索引时,A=? and B=?B=? and A=? 效果是否一致

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 345 (opens in a new tab)

Author 回答者: ansonlovecoding (opens in a new tab)

MySQL 复合索引遵循最左前缀匹配原则,这意味着如果你在多列上创建了一个复合索引,那么查询中使用这个索引时,必须按照索引中列的顺序从左到右进行匹配,所以如果符合索引是(A,B),查询 A=? and B=? 会使用到索引,而B=? and A=?不会使用到索引,两者效果是不一致的。