mysqlインデックスの使い方

(*-*)浩
(*-*)浩オリジナル
2019-05-05 17:32:376279ブラウズ

MySQL インデックスの概念

インデックスは特別なファイルです (InnoDB データ テーブルのインデックスはテーブル スペースの不可欠な部分です)。これらのファイルには、次のすべてのデータが含まれています。データテーブル レコードの参照ポインタ。より一般的に言うと、データベース インデックスは本の巻頭にある目次のようなもので、データベース クエリを高速化できます。上記の SQL ステートメントでは、インデックスがない場合、データベースは 200 個のデータすべてを走査し、条件を満たすデータを選択します。対応するインデックスを使用すると、データベースはインデックス内の条件を満たすオプションを直接検索します。 。 SQL ステートメントを「SELECT * FROMarticle WHERE id=2000000」に変更した場合、データベースが 200 万行のデータを順番に読み取った結果を返しますか、それともインデックス内で直接検索しますか? (注: 一般的には データベースはデフォルトで主キーにインデックスを生成します)。

推奨コース: MySqlチュートリアル。

# インデックスは、クラスター化インデックスと非クラスター化インデックスに分けられます。クラスター化インデックスは、データ ストレージの物理的な場所に従って順序付けされます。非クラスター化インデックスクラスタ化インデックスは複数行の取得速度を向上させることができますが、非クラスタ化インデックスは単一行の取得が非常に高速です。

MySQL インデックスの種類

1. 通常のインデックス

これは最も基本的なインデックスであり、制限はありません。たとえば、上記のタイトルフィールドに対して作成されたインデックスは通常のインデックスであり、MyIASM のデフォルトの BTREE タイプのインデックスも ほとんどの場合に使用されるインデックス。

–直接创建索引
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 SET utf8 COLLATE utf8_general_ci NOT NULL ,
`content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
`time` int(10) NULL DEFAULT NULL ,
PRIMARY KEY (`id`),
INDEX index_name (title(length))
)
–删除索引
DROP INDEX index_name ON table

2. 一意のインデックス

# は通常のインデックスと似ていますが、インデックス列の値は一意である必要がありますが、NULL 値が許可される点が異なります (主キーとは異なることに注意してください)。結合インデックスの場合、列の値の組み合わせは一意である必要があり、作成方法は通常のインデックスと同様です。

rree

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

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