ホームページ  >  記事  >  データベース  >  mysqlでインデックスを作成するテクニックは何ですか?

mysqlでインデックスを作成するテクニックは何ですか?

(*-*)浩
(*-*)浩オリジナル
2019-05-09 13:46:324194ブラウズ

Mysql インデックス作成スキル: 1. 主キー列のインデックスを作成する; 2. 頻繁に並べ替え、グループ化、結合する必要がある列のインデックスを作成する; 3. 必要な列のインデックスを作成する多くの場合、クエリ条件として使用する必要がある; 4. 区別性の高い列をインデックスとして選択するようにする; 5. 計算に関与しない列のインデックスを作成する。

mysqlでインデックスを作成するテクニックは何ですか?

#この記事では、インデックスの作成に適したカラムをいくつか紹介します。もちろん、インデックスを作成する際に注意が必要な状況もいくつかあります。 。

推奨コース:

MySQL チュートリアル

1.一意のインデックスを選択します。

一意のインデックスの値は一意であり、インデックスを使用するとレコードをより迅速に特定できます。たとえば、学生テーブルの中学校 ID は一意のフィールドです。このフィールドに一意のインデックスを確立すると、特定の学生の情報を迅速に特定できます。名前を使用すると、同じ名前が存在する可能性があり、クエリ速度が遅くなります。

2.並べ替え、グループ化、および結合操作を頻繁に必要とするフィールド (列) のインデックスを作成します。

ORDER BY、GROUP BY、DISTINCT、UNION などの操作を頻繁に必要とするフィールドの場合、並べ替え操作により無駄な時間がかかります。たくさんの時間。インデックスを付けると、並べ替え操作を効果的に回避できます。

3.クエリ条件としてよく使用されるフィールド (列) のインデックスを作成します。

フィールドがクエリ条件としてよく使用される場合、このフィールドのクエリ速度がテーブル全体のクエリ速度に影響します。したがって、このようなフィールドにインデックスを作成すると、テーブル全体のクエリ速度が向上します。

4.インデックスの数を制限する

インデックスの数は多いほど良いです。各インデックスにはディスク領域が必要であり、インデックスが増えるほど、より多くのディスク領域が必要になります。テーブルが変更された場合、インデックスを再構築して更新するのは面倒です。インデックスが増えると、テーブルの更新に時間がかかります。

5.少量のデータのインデックスを使用するようにしてください。

インデックス値が非常に長い場合、クエリの速度に影響します。たとえば、CHAR(100) 型フィールドの全文検索は、CHAR(10) 型フィールドよりも確実に時間がかかります。

6.プレフィックスを使用してインデックスを作成してください

インデックス フィールドの値が非常に長い場合は、値のプレフィックスを使用してインデックスを作成することをお勧めします。たとえば、TEXT および BLOG タイプのフィールドの全文検索は時間の無駄です。フィールドの最初の数文字のみを取得する場合、取得速度を向上させることができます。

7. 区別性の高い列をインデックスとして選択するようにしてください

区別の式は count(distinctcol)/count(*) です。つまり、フィールドは次のとおりです。繰り返されません。比率、比率が大きいほど、スキャンするレコードは少なくなります。一意のキーの区別は 1 ですが、一部のステータスおよび性別フィールドは、ビッグ データに直面して区別が 0 になる可能性があります。では、誰かが尋ねるかもしれません。この比率には経験的な価値があるのでしょうか?使用シナリオは異なり、この値を決定するのは困難です。通常、結合する必要があるフィールドは 0.1 より大きい必要があります。つまり、平均 10 レコードがスキャンされます

8インデックス列は計算に参加できず、列は「クリーン」に保つ必要があります。

たとえば、from_unixtime(create_time) = '2014-05-29' ではインデックスを使用できません。 B ツリーはすべてのフィールド値をデータ テーブルに保存しますが、取得する際には比較するすべての要素に関数を適用する必要があり、明らかにコストがかかりすぎます。したがって、ステートメントは create_time = unix_timestamp('2014-05-29');

9 のように記述する必要があります。新しいインデックスを作成せず、可能な限りインデックスを拡張するようにしてください。 たとえば、 table にはすでに a のインデックスがあり、(a, b) のインデックスを追加したい場合は、元のインデックスを変更するだけで済みます。
注: 究極のインデックスを選択する目的は、クエリを高速化することです。上記の原則は最も基本的なガイドラインですが、上記のガイドラインに固執することはできません。読者の皆さんも、今後の学習や仕事において実践を続けてください。アプリケーションの実態に基づいて分析・判断し、最適なインデックス方法を選択します。

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

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