ホームページ  >  記事  >  データベース  >  MySQL の高度なインデックス

MySQL の高度なインデックス

高洛峰
高洛峰オリジナル
2016-12-02 13:44:591020ブラウズ

インデックス: データ用に作成されるディレクトリです。

機能: クエリを高速化する可能性があります。

悪影響: 追加、削除、変更の速度が低下します。


インデックス作成の原則:

1: インデックスを付けすぎないでください

2: 最も頻度の高い where 条件を持つ列に追加します。性別など、繰り返しが多い列には追加しないでください。集中しすぎる値にインデックスを追加しても意味がありません

インデックスの種類

通常のインデックス: インデックスはクエリを高速化するためのものです

インデックス行の値を繰り返すことはできません。

主キーインデックス: 主キーは重複できません。

主キーは一意である必要がありますが、一意のインデックスは必ずしも主キーである必要はありません。

テーブルには主キーは 1 つだけ存在できますが、1 つ以上の一意です。インデックスを使用できます。

全文インデックス: mysql のデフォルトでは、全文インデックスは中国語ではほとんど意味がありません。一般に、サードパーティのソリューションが使用されます。解決策

英語には単語を分割するためのスペースと句読点があるためです。単語を作成し、その単語にインデックスを付けます。

中国語の場合、単語を区切るためのスペースはなく、mysql は各中国語単語を認識できません。

(上記の 3 種類のインデックスは列の値に対して機能しますが、フルテキスト インデックスは列の値をターゲットにすることができます)値内の特定の単語 (記事など)。全文インデックスは、this、is、you、my などの非常に頻繁に使用される単語のインデックスを作成しません。

インデックスの長さ: 列の一部を次のように指定します。インデックス

複数列インデックス: 2 つ以上の列値が全体として扱われ、インデックスとして使用されます。英語の Web サイトでは、名前と姓は全体として扱われます。このとき、where 条件で役割を果たすことができるのは名のみであり、姓は役割を果たしません。これが左側の接頭辞のルールです。

冗長インデックス: 特定の列に複数のインデックスがあります。たとえば、上の姓に対してインデックスを再度作成します。

MySQL の高度なインデックス

インデックスの作成MySQL の高度なインデックス

テーブルの作成時にインデックスを直接宣言できます。つまり、列の宣言が完了した後にインデックスを宣言します。

例:

create table test5 (

) id int,

ユーザー名 varchar(20),

学校 varchar(20),

紹介テキスト,

主キー (id),

一意 (ユーザー名),

インデックス (学校),

全文 ( intro)

) Engine myisam charset utf8;

テーブル上のすべてのインデックスを表示

テーブル名からインデックスを表示

インデックスを作成

テーブル テーブル名を変更 addindex /unique/fulltext [インデックス名] (列名)

Alter table table name add Primary key (column name) // 主キーが 1 つしかないため、インデックス名を追加しないでください

インデックスを削除して追加します

主キー以外のインデックスを削除: Alter table テーブル名 インデックス インデックス名を削除/追加;

主キーを削除: テーブル テーブル名を変更 主キーを削除/追加

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