背景: グループの友人は、in にインデックスを付けることができるかどうかは、in に含まれる文字列の数に関係していると言いました。文字列の長さが超過すると、インデックスは使用されなくなります。
実はこの認識は間違っており、多くの転載記事に誰もが騙されているのです! ! !
in にインデックスを作成できるかどうかに実際に影響するのは、in 内の修飾されたデータの割合によって異なり、mysql にインデックスを作成できるかどうかに影響します。
前回のテストでは、データの 40% 以上が一致することがわかりました (このしきい値は必ずしも 40% である必要はありませんが、前回のテストでは約 40% であったため、インデックスは使用されません。これは次の影響も受けます)その後、インデックスを付けずにテーブル全体を調べ始めます
実践:
図 1:
写真 2:
#写真 3:
写真 4:
#写真 5:
上図に示すように、テーブルリターンやインデックスカバレッジの影響を考慮しない場合、in の一致データがテーブルデータ全体の多くを占める場合、フルテーブルスキャンが開始されます。インデックスなしで。
#さらに、特別な指示
#1. in が単一の値の場合、mysql は自動的に = に最適化するため、インデックスは引き続き使用されます2. in と select の列が同じ場合、テーブルに戻る必要がないため、カバーインデックスが使用されます
推奨学習: 「
MySQL ビデオ チュートリアル#」 ##"以上がもう MySQL の使い方を誤解しないでください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。