私はmySqlのインデックスの内部に精通していませんが、私が精通している2つのデータベースベンダー製品(MsSQL、Oracle)では、インデックスはバランスの取れたツリー構造であり、そのノードは列のシーケンスされたタプルとして編成されています。インデックスは(定義されたシーケンス内で定義されています )
したがって、mySqlがそれを非常に異なる方法で行わない限り(おそらくそうではない)、(複数の列にある)任意の複合インデックスは サブセットでフィルタリングまたは並べ替える必要のあるクエリで使用できます 列のリストに互換性がある限り、つまり、列が完全なインデックス内の列のシーケンスされたリストと同じようにシーケンスされた場合、インデックス列の完全なセットの順序付けられたサブセットである限り、インデックス内の列のこれは実際のインデックスシーケンスの最初から始まり、最後を除いてギャップはありません...
つまり、(a、b、c、d)にインデックスがある場合、(a)、(a、b)、または(a、b、c)でフィルタリングするクエリもインデックスを使用できることを意味します、ただし、(b)、(c)、または(b、c)でフィルタリングする必要があるクエリは、インデックスを使用できません...
したがって、あなたの場合、列 item でフィルタリングまたはソートする必要がある場合は、 単独で、その列に別のインデックスを追加する必要があります...