我们使用db作为mysql,并有一个包含6个字段的表,其中我们已经在两个字段(例如(A,B)上创建了复合索引)。当只有字段B上有查询时,查询进入慢速查询雷达。仅字段B上的查询是否通过复合索引进行了完全优化?
或者我们需要在字段B上创建一个单独的索引,以便进行更好的优化。
发布于 2020-03-02 10:07:14
您可以通过使用解释查看查询优化器正在做什么。
要回答您的问题--如果您的索引是on (A,B),并且您的查询在where子句中不包括A,则不会使用该索引。
要理解为什么,想象一下你正在建立一个你的电影收藏的纸质目录。每一部电影都会出现在索引卡上,你会按年组织目录,然后根据电影名称组织目录。这让你很容易找到2019年上映的所有电影,但要找到一部名为“小丑”的电影,你需要依次浏览所有的索引卡。
https://stackoverflow.com/questions/60486345
复制相似问题