MySQLデータベース-インデックス


インデックスはMysqlではストレージエンジンがレコードを迅速に見つけるためのデータ構造(BTree,バランスツリー)であり、インデックスはデータベースの良好な性能にとって非常に重要であり、特にテーブル内のデータ量がますます大きくなると、インデックスが性能に与える影響がますます重要になる.
インデックスは辞書のディレクトリに相当し、単語を検索するときにディレクトリを通じてクエリーの速度を高めることができます.そうしないと、辞書の各ページをめくる必要があります.
インデックスの使用目的:クエリーの高速化.
インデックスの特徴:インデックスの作成と維持には多くの時間とディスク領域がかかりますが、クエリーの速度は大幅に向上します.(ディクショナリ・ディレクトリの作成に時間がかかり、ディクショナリ・ディレクトリがディクショナリ・サイズを占める必要があります)
索引構文
構文1:テーブルの作成時にインデックスを追加します.create tableテーブル名(フィールド名1データ型、フィールド名2データ型...、Index|key[インデックス名](フィールド名);
構文2:テーブルを作成したら、インデックスを追加します.create tableテーブル名(フィールド名1データ型、フィールド名2データ型、...);
Alter table    add {unique | primay key| index...    }    (   ) 

インデックス分類
インデックスを話す前に、テーブルt 2を作成する必要があります.
create table t2( id int, name varchar(20),phone varchar(20));

1.一般索引
通常のインデックスは、空で繰り返し可能な通常のインデックスです.
構文:
ALTER TABLE      ADD INDEX    _index(   ); 

表2への一般インデックスの追加
ALTER TABLE  t2 ADD INDEX phone_index(phone); 

2.一意のインデックス
ユニークなインデックスです.空でも繰り返してはいけません.
ALTER TABLE     ADD UNIQUE(   ); #        
ALTER TABLE    ADD     type UNIQUE; #          。

フィールド名phoneを一意のインデックスに設定します.
alter table t2 add UNIQUE phone_index(phone);

テーブルの作成の詳細を表示するには、次の手順に従います.
show create table t2;

印刷すると次のようになります.
CREATE TABLE `t2` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  UNIQUE KEY `phone_index` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


3.プライマリ・キー索引
プライマリ・キー・インデックスは、空ではなく、繰り返してはいけません.プライマリ・キーであればインデックスです.
構文
alter table    add PRIMARY key(   );

テーブルt 2のidにプライマリキーインデックスを設定する
alter table t2 add PRIMARY key(id);

設定結果の表示
show create table t2 
CREATE TABLE `t2` (
  `id` int(11) NOT NULL DEFAULT '0',
  `name` varchar(20) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `phone_index` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


4.複数列索引構文:
ALTER TABLE     ADD INDEX(  1,  2,  3); 

索引の削除
索引を削除する構文は次のとおりです.
Drop index     on   ;

例えば、テーブルt 2のインデックスを削除する:
drop index phone_index on t2;

インデックスを使用するには何に注意すればいいですか?
  • 少量データ非使用
  • クエリ数が少ないインデックスを使用しない
  • クエリーはインデックスフィールドを携帯し、通常selectの後に最初の
  • に配置される.
  • インデックスは、クエリーの効率を向上させ、多くのリソースを占有します.

  • 注意:1、インデックスは多ければ多いほど良いわけではありません.(1冊の本、半分の本は目次ではいけません).