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

(*-*)浩
リリース: 2020-09-16 14:15:57
オリジナル
9464 人が閲覧しました

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

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


推奨コース:

MySQL チュートリアル

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

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

user_test

テーブル<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">ALTER TABLE user_test ADD INDEX index_user(user_name , city , age);</pre><div class="contentsignin">ログイン後にコピー</div></div> に結合インデックスを作成します

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

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート