ホームページ >データベース >mysql チュートリアル >mysqlデータベースインデックス

mysqlデータベースインデックス

黄舟
黄舟オリジナル
2017-02-28 13:36:331491ブラウズ

インデックスは、すべてのレコードで使用されるポインターを含む特別なファイルです。本の目次と同じように、本の検索を高速化します。データベースはインデックスがなければほとんど使用できません。かつて誰かが冗談めかして、インデックスを使用する MySQL がランボルギーニなら、インデックスを使用しなければ、せいぜい人力三輪車にすぎないと言いました。

インデックスは、クラスター化インデックスと非クラスター化インデックスに分類されます。クラスター化インデックスは複数行の取得速度を向上させ、非クラスター化インデックスは単一行のデータの取得速度を向上させます。データベースの機能のうち、ユニークインデックス、主キーインデックス、クラスタードインデックスの3種類のインデックスを作成できます。

通常のインデックスは、制限のないインデックスであり、その確立プロセスは次のとおりです: CREATE INDEX index_name ON table(column(col_name));它是MYIASM数据库引擎默认的BTREE类型的索引。使用navicat导出mysql数据库脚本的时候经常会看到这样的字段。

 <strong> 唯一索引</strong>是在普通索引的基础上保证索引列的值必须唯一,除主键外可以有空值。建立过程:

CREATE UNIQUE INDEX indexName ON table(column(length))

索引的利弊: 一意のインデックスは、インデックス列の値が一意であることを保証するために通常のインデックスに基づいており、主キーを除いて null 値が存在する可能性があります。作成プロセス:

select * form table where c1=1 and c2=2;
 
   select * from table where c1=1;

インデックス作成の長所と短所:

インデックスを使用すると、クエリと並べ替えの速度が大幅に向上しますが、データ ストレージと更新の効率は低下します。インデックスはインデックス ファイルを生成する必要があります。結合インデックスを広範囲に使用すると、インデックス ファイルが急速に増大します。 これらの問題に対応して、次の最適化方法が提案されています:

クラスター化インデックスを使用する非クラスター化インデックスを使用する
1. クラスター化インデックスと非クラスター化インデックスをいつ使用するか? アクションの説明
列は多くの場合グループ化され並べ替えられます 使用する Use
内のデータを返す特定の範囲 使用する 使用しない
1 つまたはごく少数の個別の値 使用しない 使用しない
少数の個別の値 使用する 使用しない使用
多数の個別の値 未使用 使用
頻繁に更新される列 未使用 使用
外部キー列 使用 使用済み
主キー列 使用する 使用する
インデックス列を頻繁に変更する🎜🎜使用しない🎜🎜使用する🎜🎜🎜🎜

2. 使用短索引列。

<strong>    </strong>索引列如果使用varchar(255)的话会让索引文件变大,不利于检索,这255个字符中前10或20个字符能够保证索引唯一的话,就使用这些字段作为索引列即可。

3. like语句

    在数据库操作中不建议使用like语句,但费用不可时,like"%aaa%"不会使用索引而like“aaa%”则可以使用索引。

4. 不要再索引列执行运算,这样会导致索引失效。

5. 使用越小越简单的数据类型越好;尽量避免null;

6. 组合索引仅能对索引最左边的索引进行有效查询。如:

    索引列为c1,c2,以下查询语句有效:

select * form table where c1=1 and c2=2;
 
   select * from table where c1=1;

但对于一下查询语句是无效的:<br>

select * from table where c2=2;

 以上就是mysql数据库-索引的内容,更多相关内容请关注PHP中文网(www.php.cn)!<br>

<br>

<br>

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