ホームページ  >  記事  >  データベース  >  mysqlインデックスとは何ですか? mysql インデックスに関する簡単な説明

mysqlインデックスとは何ですか? mysql インデックスに関する簡単な説明

青灯夜游
青灯夜游転載
2018-11-22 15:15:493677ブラウズ

この記事でわかることは、mysql インデックスとは何なのかということです。誰もが mysql インデックスを簡単に理解できるように、mysql インデックスについて簡単に説明しましょう。困っている友人は参考にしていただければ幸いです。

1: インデックスとは

インデックス自体は、データ テーブルの特定のフィールドが記録される独立した記憶単位です。 . とフィールドに対応する物理空間。インデックス内にはアルゴリズムがサポートされているため、クエリ速度が非常に速くなります。 [推奨関連ビデオ チュートリアル: mysql チュートリアル ]

インデックスを使用すると、インデックスを条件として、速度に基づいてデータ クエリを実行できます。非常に高速です

1. インデックス自体には「 アルゴリズム 」がサポートされており、検索したい キーワード (フィールド) を素早く見つけることができます

# 2. インデックス

フィールド 物理アドレス と直接対応しているため、探したい情報を素早く見つけることができます

データ テーブル内のすべてのフィールドにインデックスを付けることができます

2 番目のインデックス タイプ

1、4 つのタイプ:

(1) 主キー プライマリ キー

主キーのインデックス、インデックスに auto_increment を設定する必要があります。列の値は null にすることはできず、一意である必要があります。

(2) 一意の一意のインデックス

インデックス列の値は、次のとおりにすることはできません。繰り返しますが、null 値も許可されます

(3) 通常のインデックスインデックス

インデックス列の値は繰り返し可能です。

(4) フルテキストインデックスフルテキストインデックス

Myisam データテーブルはこのインデックスを設定できます

2、複合インデックス

インデックスは 2 つまたは複数の列で構成され、複合インデックスまたは結合インデックスと呼ばれます。

#3. インデックスを作成します

#1. テーブルを作成する場合

1)、メンバーテーブルを作成する際に、各種インデックスを作成します。

create table member(
  id  int not null auto_increment comment '主键',
  name char(10) not null default '' comment '姓名',
  height tinyint not null default 0 comment '身高',
  old tinyint not null default 0 comment '年龄',
  school varchar(32) not null default '' comment '学校',
  intro text comment '简介',
  primary key (id),  // 主键索引
  unique index nm (name), //唯一索引,索引也可以设置名称,不设置名字的话,默认字段名
  index (height),   //普通索引
  fulltext index (intro) //全文索引
)engine = myisam charset = utf8;
2)、既存のデータテーブルにインデックスを追加します
//注:一般设置主键后,会把主键字段设置为自增。(alter table member  modify id  int not null auto_increment comment '主键';)
alter table member add primary key(id); 
alter table member add unique key nm (name);
alter table member add index(height);
alter table member add fulltext index(intro);
3)、複合インデックスを作成します (インデックスには名前がありません。デフォルトでは最初のフィールドが名前として取り出されます) )

alter table member add unique key nm (name,height);

2、インデックスを削除

##

alter table 表名 drop primary key;//删除主键索引
注:

auto_increment 属性がこの主キー フィールドに存在する場合は、最初に削除する必要があります。 (alter table table name edit Primary key int not null comment 'primary key')

データ テーブル フィールドの auto_increment 属性を削除します。

alter table 表名 drop  index 索引名称;  //删除其它索引(唯一,普通,全文)
例:
alter table member drop index nm;

4. Explain インデックスが使用されているかどうかを確認します

具体的な操作:

Explain クエリ SQL ステートメントこれは、主キー インデックスが設定されていない場合です: (実行速度と効率が低い)

主キーを追加した後:

5. インデックス付けに適したシナリオ

1. Where クエリ条件 (where の後に設定されるクエリ条件フィールドはすべてインデックス作成に適しています)。

2. クエリの並べ替え (フィールド順) #6. インデックスの原則

#1.原則

select * from emp where empno = 1325467;//empno条件独立,使用索引
select * from emp where empno+2 = 1325467;//empno条件不独立,只有独立的条件字段才可以使用索引
2、左原則

ファジークエリ、& __

のような %: 複数のファジーコンテンツを関連付けます

_: ファジーコンテンツを関連付ける

例:

select * form 表名 where a like "beijing%";//使用索引
select * from 表名 where a like "beijing_";//使用索引
select * from 表名 where a like "%beijing%”;//不使用索引
select * from 表名 where a like "%beijing";//不使用索引

3, 複合インデックスインデックス (a,b)

select * from 表名 where a like "beijing%";//使用索引
select * from 表名 where b like "beijing%;//不使用索引
select * form 表名 where a like "beijing%" and b like "beijng%";//使用索引

4 ,または原則

OR の関連条件には、インデックスを使用する前にすべてインデックスが必要です。

例: (index(a)、index(b))

select * from 表名 where a = 1 or b = 1;//使用索引
select * from 表名 where a = 1 or c = 1;//没有使用索引

要約: 上記がこの記事の全内容です。お役に立てば幸いです。みんなの勉強に役立ちました。

以上がmysqlインデックスとは何ですか? mysql インデックスに関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。