在看 http://tech.meituan.com/mysql-index.html 这篇文章的时候,里面写到创建索引的几大原则中有一条是:
最左前缀匹配原则,非常重要的原则, mysql 会一直向右匹配直到遇到范围查询(>、<、 between 、 like)就停止匹配,比如 a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引, d 是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到, a,b,d 的顺序可以任意调整。
没看明白为什么“(a,b,c,d)顺序的索引, d 是用不到索引的”,而“如果建立(a,b,d,c)的索引则都可以用到”。不是“遇到范围查询(>、<、 between 、 like)就停止匹配”吗,那为什么第二种方式创建索引 d 就能用到索引?
还有个问题,只有 = 号的时候才会用到索引吗?还有其他操作可以用索引吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.