ホームページ  >  記事  >  データベース  >  mysqlでインデックスを使用していますか?

mysqlでインデックスを使用していますか?

WBOY
WBOYオリジナル
2022-04-27 19:11:1511948ブラウズ

mysql でインデックスを使用する状況: 1. in クエリが左端の原則に準拠している場合、インデックスは正常に使用できます; 2. クエリの前に範囲クエリがある場合、ジョイントインデックスが失敗した場合、インデックスは使用されません; 3. クエリ値の型が int で、カラムの型が vachar の場合、インデックスは失敗します。

mysqlでインデックスを使用していますか?

このチュートリアルの動作環境: Windows10 システム、mysql5.7.17 バージョン、Dell G3 コンピューター。

mysql ではインデックスを使用しますか?

1. mysql 5.7.17 バージョンでは、クエリでインデックスを使用できます

+-----------+
| version() |
+-----------+
| 5.7.17 |
+-----------+

2. クエリの値の型は int です、列 タイプは vachar であるため、インデックスが失敗します。

3. データ量が大きすぎます (200 万件)、in 条件が多数あります。これは Mysql オプティマイザーによって判断される必要があります。データ量が多い場合、in クエリのインデックス作成ができない可能性があります。最高の。 (追記: この部分は MySQL 自身のオプティマイザの判断を考慮する必要があります。MySQL のオプティマイザの実行原理に関しては、非常に複雑です。要するに、さまざまな条件を判断して、MySQL が考える最適解を選択することです。)

では、共同インデックスに追加されたフィールドに対して、in クエリは有効になるのでしょうか?

まず第一に: ジョイント インデックスについては、概念を明確にする必要があります。ジョイント インデックスの場合、実行順序は左から右に一致します。これは、ID、名前などによる順序と同じです。最初のフィールドは順序どおりである必要があります。2 番目のフィールドのインデックスを使用する場合は、最初に最初のフィールドを使用し、2 番目のフィールドが順序どおりであることを確認する必要があります。

第 2 に: 左端のプレフィックス マッチングの原則は非常に重要な原則です。MySQL は、範囲クエリ (>, "3" および d = "4" に遭遇するまで、常に右側にマッチングします。If (a, b、c、dの順にインデックスを作成すると、cフィールドは範囲クエリを実行し、結合インデックスが無効になるため、dはインデックスを使用できません。(a、b、d、c)のインデックスを作成すると、 a, b , d の順序は任意に調整できます.

, 結果は上記の概念と同じです. クエリが左端の原則に従っている場合、インデックスは次のようになりますただし、in クエリの前に Range クエリがある場合、結合インデックスは無効になり、当然、in クエリではインデックスが使用されません

推奨される学習: mysql ビデオ チュートリアル

以上がmysqlでインデックスを使用していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。