ホームページ >データベース >mysql チュートリアル >mysqlのインデックスタイプとは何ですか
mysql のインデックス タイプは次のとおりです: 1. 通常のインデックス、2. 一意のインデックス、3. 主キー インデックス、4. 結合インデックス、5. フルテキスト インデックス。通常のインデックスは最も基本的なインデックスであり、制限はありません。一意のインデックスでは、インデックス列の値が一意である必要がありますが、NULL 値も許可されます。
#MySQL のインデックス タイプは次のとおりです。
#フルテキスト インデックス
(推奨チュートリアル:
mysql ビデオ チュートリアルは最も基本的なインデックスであり、制限はありません。次の作成方法があります。
インデックスを直接作成するCREATE INDEX index_name ON table(column(length))
テーブル構造を変更してインデックスを追加する
ALTER TABLE table_name ADD INDEX index_name ON (column(length))
テーブルの作成と同時にインデックスを作成します
CREATE TABLE `table` ( `id` int(11) NOT NULL AUTO_INCREMENT , `title` char(255) CHARACTER NOT NULL , `content` text CHARACTER NULL , `time` int(10) NULL DEFAULT NULL , PRIMARY KEY (`id`), INDEX index_name (title(length)) )
インデックスを削除します
DROP INDEX index_name ON table2.一意のインデックス
一意のインデックスの作成
CREATE UNIQUE INDEX indexName ON table(column(length))
テーブル構造の変更
ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))
作成 テーブルを指定する場合、
CREATE TABLE `table` ( `id` int(11) NOT NULL AUTO_INCREMENT , `title` char(255) CHARACTER NOT NULL , `content` text CHARACTER NULL , `time` int(10) NULL DEFAULT NULL , UNIQUE indexName (title(length)) );
3 を直接指定します。主キー インデックス
は特別な一意のインデックスです。テーブルには主キーを 1 つだけ持つことができ、null は含めることができません値は許可されます。通常、主キー インデックスはテーブルの作成時に同時に作成されます:CREATE TABLE `table` ( `id` int(11) NOT NULL AUTO_INCREMENT , `title` char(255) NOT NULL , PRIMARY KEY (`id`) );4. 複合インデックス
ALTER TABLE `table` ADD INDEX name_city_age (name,city,age);5 に従います。フルテキスト インデックス
テーブル作成時にフルテキストインデックスを追加するのが適切です
CREATE TABLE `table` ( `id` int(11) NOT NULL AUTO_INCREMENT , `title` char(255) CHARACTER NOT NULL , `content` text CHARACTER NULL , `time` int(10) NULL DEFAULT NULL , PRIMARY KEY (`id`), FULLTEXT (content) );テーブル構造を変更してフルテキストインデックスを追加します
ALTER TABLE article ADD FULLTEXT index_content(content)
インデックスを直接作成する
CREATE FULLTEXT INDEX index_content ON article(content)
欠点
1. インデックスによりクエリ速度が大幅に向上しますが、テーブルの挿入や更新などのテーブルの更新速度を低下させたり、削除したりします。テーブルを更新するときは、データを保存するだけでなく、インデックス ファイルも保存する必要があるためです。 2. インデックス ファイルを作成すると、ディスク領域が占有されます。通常、この問題は深刻ではありませんが、大きなテーブルに複数の結合インデックスを作成すると、インデックス ファイルが急速に大きくなります。インデックスは効率を向上させる要素の 1 つにすぎません。大量のデータを含むテーブルがある場合は、最適なインデックスの調査と構築、またはクエリ ステートメントの最適化に時間を費やす必要があります。
注意事項
インデックスを使用する場合、いくつかのヒントと注意事項があります: 1. インデックスには NULL 値を持つ列は含まれません
列に null 値が含まれている限り、その列はインデックスに含まれません。複合インデックス内の 1 つの列に null 値が含まれている限り、この列は複合インデックスに対して無効になります。したがって、データベースを設計するときは、フィールドのデフォルト値を null にしないでください。
2. 短いインデックス
を使用して文字列のインデックスを作成します。可能であれば、プレフィックスの長さを指定する必要があります。たとえば、char(255) 列がある場合、ほとんどの値が最初の 10 文字または 20 文字内で一意である場合は、列全体にインデックスを付けないでください。短いインデックスはクエリ速度を向上させるだけでなく、ディスク領域と I/O 操作を節約します。
3. インデックス列の並べ替え
クエリではインデックスが 1 つだけ使用されるため、インデックスが where 句で使用されている場合、順序付けされた列はインデックスを使用しません。したがって、データベースのデフォルトの並べ替えで要件を満たすことができる場合は、並べ替え操作を使用しないでください。複数の列の並べ替えを含めないようにしてください。必要に応じて、これらの列に対して複合インデックスを作成することをお勧めします。
4. like 文の操作
一般的には like 操作の使用は推奨されていませんが、どうしても使用しなければならない場合には、どのように使用するかも問題となります。 「�a%」のようにインデックスは使用されませんが、「aaa%」のようにインデックスは使用されます。
5.列に対して操作を実行しないでください。これにより、インデックスが失敗し、
SELECT * FROM table_name WHERE YEAR(column_name)<2017;
6 などのテーブル全体のスキャンが実行されます。not in および a8093152e673feb7aba1828c43532094 は使用しないでください。オペレーション###
以上がmysqlのインデックスタイプとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。