国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

索引

インデックスは、列內(nèi)の特定の値を持つ行をすばやく検索するために使用されます。

インデックスを使用しない場(chǎng)合、MySQL は最初のレコードから開始して、関連する行が見つかるまでテーブル全體を読み取る必要があります。テーブルが大きいほど時(shí)間がかかります。テーブル內(nèi)のクエリ対象のカラムにインデックスがある場(chǎng)合、MySQL はすべてのデータを調(diào)べることなく、データ ファイルの中央を検索する段階にすぐに到達(dá)できます。

もちろん、インデックスの數(shù)が多すぎると、修正速度が遅くなります。変更されたデータを書き込むときは、インデックスも変更する必要があるためです。

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

QQ截圖20161009152415.png

QQ截圖20161009152423.png 1. 通常のインデックス


たとえば、上記のタイトルフィールド用に作成されたインデックスは通常のインデックスです。 MyIASM のデフォルトです。 BTREE タイプのインデックスは、ほとんどの場(chǎng)合に使用されるインデックスでもあります。

–インデックスを直接作成します

CREATE INDEX index_name ON table(column(length))
 –修改表結(jié)構(gòu)的方式添加索引
 
 ALTER TABLE table_name ADD INDEX index_name ON (column(length))
 
 –創(chuàng)建表的時(shí)候同時(shí)創(chuàng)建索引
 
 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. インデックスの値が異なる點(diǎn)を除き、通常のインデックスと似ています。列は必須ですただし、null 値は許可されます (主キーとは異なることに注意してください)。結(jié)合インデックスの場(chǎng)合、列の値の組み合わせは一意である必要があり、作成方法は通常のインデックスと同様です。
–創(chuàng)建唯一索引
 
 CREATE UNIQUE INDEX indexName ON table(column(length))
 
 –修改表結(jié)構(gòu)
 
 ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))
 
 –創(chuàng)建表的時(shí)候直接指定
 
 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`),
 
 UNIQUE indexName (title(length))
 
 );


3. フルテキスト インデックス (FULLTEXT)

MySQL は、バージョン 3.23.23 以降、フルテキスト インデックスとフルテキスト検索をサポートしています。 CHAR、VARCHAR、または TEXT 列。TABLE ステートメントの一部として作成されるか、ALTER TABLE または CREATE INDEX を使用して後で追加されます。 ////より大きなデータ セットの場(chǎng)合は、FULLTEXT インデックスを使用せずにテーブルにデータを入力してインデックスを作成する方が、既存の FULLTEXT インデックスにデータを入力するよりも高速です。ただし、大容量のデータ テーブルの場(chǎng)合、フルテキスト インデックスの生成は非常に時(shí)間とハードディスクのスペースを消費(fèi)するプロセスであることに注意してください。

– テーブル作成時(shí)に全文インデックスを追加するのが適しています

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`),
 
 FULLTEXT (content)
 
 );
– テーブル構(gòu)造を変更して全文インデックスを追加します

ALTER TABLE article ADD FULLTEXT index_content(content)

– インデックスを直接作成します



CREATE FULLTEXT INDEX index_content ON article(content)

4. 単一列インデックス、複數(shù)列インデックス


複數(shù) 単一列インデックスのクエリ効果は、単一列インデックスの効果とは異なります。これは、クエリの実行時(shí)に MySQL が使用できるインデックスは 1 つだけであり、選択されるインデックスは 1 つだけであるためです。複數(shù)のインデックスから最も制限の厳しいインデックス。

5. 結(jié)合インデックス (一番左のプレフィックス)

一般的に使用される SQL クエリ文には多くの制限があるため、MySQL の効率をさらに絞るには、結(jié)合インデックスの確立を検討する必要があります。たとえば、上の表では、タイトルと時(shí)刻の結(jié)合インデックスが作成されます: ALTER TABLEarticle ADD INDEXindex_titme_time (title(50), time(10))。このような結(jié)合インデックスを確立することは、実際には、次の 2 つの結(jié)合インデックス セットを確立することと同じです:

–title、time

–title

なぜ time のような結(jié)合インデックスがないのですか?これは、MySQL 複合インデックスの「左端のプレフィックス」の結(jié)果です。簡単に理解すると、組み合わせは一番左のものから開始するだけです。次の SQL に示すように、これら 2 つの列を含むクエリだけが結(jié)合インデックスを使用するわけではありません。

– 上記のインデックスを使用します

SELECT * FROM article WHREE title='測(cè)試' AND time=1234567890;
 
 SELECT * FROM article WHREE utitle='測(cè)試';


– 上記のインデックスを使用しません

SELECT * FROM article WHREE time=1234567890;


學(xué)び続ける
||
<?php echo "Hello Mysql"; ?>
提出するリセットコード