84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
如果test表有一个组合索引(a,b),执行如下两条语句。explain select * from test where a=1 and b=1;explain select * from test where b=1 and a=1;执行结果显示这两条语句都用索引。根据最左原则,只有第一条使用索引,第二条不使用索引。不明白为什么,求解惑
質問者が挙げた状況では、mysql はクエリがインデックスの順序に従うように where 句の条件の順序を最適化します。
より具体的に言うと、上記の SQL は交差クエリに属します (両方とも and です)。mysql では、Index Merge intersection algorithm アルゴリズムを使用して条件節の順序を調整します。より詳細な説明については、公式ドキュメントを参照してください。
Index Merge intersection algorithm
質問者が挙げた状況では、mysql はクエリがインデックスの順序に従うように where 句の条件の順序を最適化します。
より具体的に言うと、上記の SQL は交差クエリに属します (両方とも and です)。mysql では、
Index Merge intersection algorithm
アルゴリズムを使用して条件節の順序を調整します。より詳細な説明については、公式ドキュメントを参照してください。