
1 cz5424 2019 年 8 月 13 日 via iPhone a,b 联合索引不行吗 |
2 Raymon111111 2019 年 8 月 13 日 不考虑其它查询和区分度的话 建联合索引 a, b |
3 limuyan44 2019 年 8 月 13 日 连上你的 mysql,explain |
4 passerbytiny 2019 年 8 月 13 日 不知道我理解的对不对,除了直接查索引的( select pk from table where pk > some 这种的),排序跟索引无关。 |
5 reus 2019 年 8 月 13 日 explain 一下 建索引 再 explain 看看有没有不一样 就行了 |
6 Oktfolio 2019 年 8 月 13 日 联合索引 a, b |
7 Laz 2019 年 8 月 13 日 explain |
8 Zach369 2019 年 8 月 13 日 如果只看这个 sql 语句,a,b 联合索引就可以了。 但是也要看实际情况。explain 看下。 |
9 xaoduer 2019 年 8 月 13 日 a,b 联合索引的时候,先根据 a 索引查找出 a=1 的行,如果没有 desc,直接根据最左前缀从 b 索引取第一条即可。但如果是 desc,是不是意味着要对所有 a=1 的结果由正序变成逆序,刚好对应排序算法的最坏复杂度,看起来执行效率比单个 a 索引更差? |
10 gam2046 2019 年 8 月 13 日 |
11 Varchar 2019 年 8 月 13 日 感觉 a、b 各自单独加索引或者联合索引区别不大 从扫描级别上看,应该都是 ref |
12 Aresxue 2019 年 8 月 26 日 猜一下,a 字段只有两种取值,所以扫描行数过多,导致 CBO 放弃走索引执行全表扫描(联合索引 a,b 同理,因为 mysql 索引是最左匹配原则,联合索引 a,b 你可以想象成在 B+树的分支中挑选出为 a 的子树,然后再在当前范围中找出为 b 的子树,但在熟筛选 a 的时候这个执行计划就被 CBO 放弃了)。 |