ホームページ  >  記事  >  データベース  >  mysqlでインデックスを使用するにはどうすればよいですか?

mysqlでインデックスを使用するにはどうすればよいですか?

(*-*)浩
(*-*)浩オリジナル
2019-05-08 11:37:299448ブラウズ

ソート時にインデックスを利用してソートを行うことができれば、ソート速度が大幅に向上しますが、インデックスを利用してソートを行うには、以下の2点を満たす必要があります。

1. ORDER BY 句の後の列の順序は、結合インデックスの列の順序と一致している必要があり、すべての並べ替え列の並べ替え方向 (順方向/逆順) も一致している必要があります。
## 2. クエリされたフィールド値はインデックス列に含まれており、カバーインデックスを満たす必要があります。


推奨コース:

MySQL チュートリアル

mysqlでインデックスを使用するにはどうすればよいですか?

例を通して分析しましょう

user_test

テーブル<pre class="brush:php;toolbar:false">ALTER TABLE user_test ADD INDEX index_user(user_name , city , age);</pre> に結合インデックスを作成します

インデックス ソートが使用できるケース

SELECT user_name, city, age FROM user_test ORDER BY user_name;
SELECT user_name, city, age FROM user_test ORDER BY user_name, city;
SELECT user_name, city, age FROM user_test ORDER BY user_name DESC, city DESC;
SELECT user_name, city, age FROM user_test WHERE user_name = 'feinik' ORDER BY city;
注: 4 番目の SQL ステートメントは少し特殊で、where クエリ条件がインデックス列の最初の列であり、が定数条件の場合、インデックスも使用できます。

インデックスソートが使用できないケース

インデックス列に性別が含まれていません

SELECT user_name, city, age FROM user_test ORDER BY user_name, sex;

ソート列の方向が不一致です

SELECT user_name, city, age FROM user_test ORDER BY user_name ASC, city DESC;

必要なクエリフィールド列性別はインデックス列

SELECT user_name, city, age, sex FROM user_test ORDER BY user_name;

に含まれていません。クエリ条件

user_name

は範囲クエリであるため、インデックスの他の列は使用できません。 うわー

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

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