、インデックスを使用するどのような状況の下で - パフォーマンスの最適化

6、インデックスの最適化

1.インデックスとは何ですか?

インデックスの役割は書籍カタログに相当し、あなたはすぐにあなたがディレクトリページに基づいて必要なものを見つけることができます。

その後、時計回りに値を含む行を見つけ、特定の値を見つけるためにインデックスを使用してデータベース。テーブルのインデックスの確立は、次いで、検索インデックス値は、インデックスに迅速に見つけるためのインデックスに格納されたROWID(等価ページ)によって、テーブル内の最後の対応するレコードをクエリに一致します。インデキシングので、同じであり、この列は、それがスキャンの繰り返しを避けるために、インデックスを追加するために、ローカルの管理エリアコードと、そのような行政区域コードとして、ディレクトリの等価、方向フィールドを比較した表であります最適化の目的を達成!

2、どのようにインデックスを作成するには

TABLE文を作成するときは、インデックスを作成することができます、また、テーブルのために別のインデックスを追加しINDEXまたはALTER TABLEのCREATE使用することができます。
1、ALTER TABLE

ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。
ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)

説明:TABLE_NAMEテーブルの名前は、列インデックスは、各列の複数の列の間のコンマで区切られた外インデックス、column_listをポイントを増加させることです。インデックス名INDEX_NAMEのオプションは、デフォルトでは、MySQLはインデックスの最初の列に基づいて名前を割り当てます。また、ALTER TABLEを使用すると、単一のステートメントで複数のテーブルを変更することができますので、あなたは、同時に複数のインデックスを作成することができます。

2、CREATE INDEX

CREATE INDEX可对表增加普通索引或UNIQUE索引。
CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)

説明:TABLE_NAME、INDEX_NAMEとcolumn_listを同じ意味ALTER TABLE文をしている、インデックス名はオプションではありません。また、あなたは、CREATE INDEX文でPRIMARY KEYインデックスを作成することはできません。

3、インデックス型
のインデックスを作成するとき、あなたはインデックスが重複する値が含まれているかどうかを指定することができます。そうでない場合には、インデックスがPRIMARY KEYまたはUNIQUEインデックスのために作成する必要があります。重複する値が含まれていない、単一の保証インデックス、単一の一意性のために。複数列のインデックスの一意性のために、ユニークな値の複数の組み合わせを確保します。

PRIMARY KEYインデックスとUNIQUEインデックスは非常に似ています。

実際には、PRIMARY KEYインデックスはPRIMARYが持っているUNIQUEインデックスの名前だけです。テーブルインデックスは、同じ名前の2を持つことができないため、表には、一つだけPRIMARY KEYを含むことができること。この意味。
学生の表に対して次のSQLステートメントは、SIDにPRIMARY KEYインデックスを追加します。

ALTER TABLE students ADD PRIMARY KEY (sid)

図4は、インデックスが削除
インデックスを削除するには、ALTER TABLEまたはDROP INDEXステートメントを使用することができます。同様にCREATE INDEX文を、DROP INDEXは、ALTER TABLE文の処理、構文などの内部にあってもよいです。

DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY

このうち、最初の2つのステートメントは、インデックスINDEX_NAME table_nameのを削除し、等価です。
PRIMARY KEYインデックスを削除するときに、テーブルが一つだけPRIMARY KEYインデックスを持つことができるので、第3条の文のみ、使用されている、インデックス名を指定する必要はありません。あなたはPRIMARY KEYインデックスを作成しませんが、テーブルが1つまたは複数のUNIQUEインデックスを持っている場合、MySQLは最初のUNIQUEインデックスを削除します。

あなたは、テーブルから列を削除した場合、インデックスが影響を受けることになります。あなたが列を削除した場合、マルチカラムインデックスのポートフォリオについては、列がインデックスから削除されます。あなたは、インデックスのすべての列を削除した場合、インデックス全体が削除されます。

5、インデックスを参照してください

mysql> show index from tblname;

mysql> show keys from tblname;

6、どのような状況下では、インデックスを使用できますか?
図1に示すように、主キーテーブル
2は、自動的に一意のインデックス作成
3、テーブルのみ制約フィールド
(SQLのフィールド条件の制約のために)4、フィールドクエリ直接条件
5は、クエリは、テーブル内の他のフィールドに関連付けられた
、6ソートクエリフィールド(大幅に並べ替えの速度を向上させる、インデックスによるアクセスするかのソートフィールド)の
7、問合せ統計や統計グループ化フィールド
8、テーブルのレコード(数が少なすぎる場合は、インデックスを使用して、テーブル内の唯一の5つのレコード、アクセスへ記録、それ最初のニーズは、一般的なインデックステーブルとデータテーブルが)同じデータブロックではありません、インデックステーブルを介してデータテーブルにアクセスする、インデックステーブルにアクセスするには
、通常のプロセスのためにいくつかのビジネスに(変更、削除、頻繁に挿入、表9にすべきクエリの場合、インデックス)を最小化することができ
10、データ複製及び配布フィールド平均(表行100,000がある場合、フィールドTとF 2つだけの値の種類、及び約の各値の確率分布があります50%は、このテーブル構成インデックスのフィールドは、一般的に、データベースのクエリ速度を改善しない。)
11、およびしばしばメインフィールドクエリが、メインインデックスフィールド値以上の表 フィールド
手段12は、項目が千万MySQLデータベースに連動し、パフォーマンスを向上させます

リリース1079元の記事 ウォンの賞賛888 ビュー40000 +

おすすめ

転載: blog.csdn.net/weixin_42528266/article/details/103993922