目录是开创在表上的,对数据库表中一列或多列的值实行排序的风姿洒脱种构造

其功用重要在于升高查询的速度,减少数据库系统的属性费用

经过索引,查询数据不必读完笔录的全部新闻举行相称,而是只查询索引列

目录相当于辞书中的音序表,要询问某字时方可在音序表中找到

然后径直跳转到那生龙活虎音序所在地方,而不用从字典第朝气蓬勃页最初翻,逐字匹配

tips:目录虽能拉长查询速度,但在插入记录时会根据索引进行排序,由此收缩了插入速度

最佳的操作办法是先删除索引,插入大批量记下后再成立索引

目录分类

1.见怪不怪索引:不附加别的节制条件,可创建在别的数据类型中

2.唯风流浪漫性索引:使用unique参数能够安装索引为唯生机勃勃性索引,在创造索引时,约束该索引的值必得唯后生可畏,主键正是大器晚成种唯风姿浪漫性索引

3.全文索引:使用fulltext参数能够设置索引为全文索引。全文索引只可以创建在char、varchar或text类型的字段上。查询数据量非常的大的字符串类型字段时,效果明摆着。但唯有MyISAM存款和储蓄引擎协理全文字笔迹查证索

4.单列索引:在表中单个字段上创制的目录,单列索引能够是任何类型,只要保险索引只对应三个二个字段

5.多列索引:在表中多个字段上创造的目录,该索引指向创建时对应的八个字段

6.空间索引:使用spatial参数能够设置索引为空间引得,空间引得只能创建在空间数据类型上举个例子geometry,并且无法为空,近期独有MyISAM存款和储蓄引擎辅助

在创立表时创建索引创制普通索引复制代码 代码如下:mysql create table index1( –
id int, – name varchar(20卡塔尔, – sex boolean, – index(id卡塔尔(قطر‎ – 卡塔尔(قطر‎;Query OK, 0
rows affected (0.11 sec卡塔尔国此处在id字段上开创索引,show create table可查阅

制造唯意气风发性索引复制代码 代码如下:mysql
create table index2( – id int unique, – name varchar(20卡塔尔国, – unique index
index2_id(id ASC卡塔尔国 – State of Qatar;Query OK, 0 rows affected (0.12
sec卡塔尔国此处使用id字段创造了一个名叫index2_4503.com,id的索引

此处的id字段可以不设置唯大器晚成性约束,但那样一来索引就未有效率

创制全文索引复制代码 代码如下:mysql
create table index3( – id int, – info varchar(20State of Qatar, – fulltext index
index3_info(info卡塔尔国 – 卡塔尔engine=MyISAM;Query OK, 0 rows affected (0.07
sec卡塔尔国要留意创立全文索引时只好选取MyISAM存储引擎

始建单列索引复制代码 代码如下:mysql
create table index4( – id int, – subject varchar(30卡塔尔国, – index
index4_st(subject(10State of Qatar卡塔尔 – 卡塔尔(قطر‎;Query OK, 0 rows affected (0.12
sec卡塔尔国此处subject字段长度是30,而索引长度则是10

如此做的意在坚实查询速度,对于字符型的数量实际不是查询全体音讯

创制多列索引复制代码 代码如下:mysql
create table index5( – id int, – name varchar(20卡塔尔国, – sex char(4State of Qatar, –
index index5_ns(name,sex卡塔尔国 – 卡塔尔国;Query OK, 0 rows affected (0.10
sec卡塔尔国可以看来,这里运用了name字段和sex字段创立索引列

创设空间引得复制代码 代码如下:mysql
create table index6( – id int, – space geometry not null, – spatial
index index6_sp(space卡塔尔 – 卡塔尔engine=MyISAM;Query OK, 0 rows affected (0.07
sec卡塔尔国这里须求专心空间space字段无法为空,还会有存款和储蓄引擎

在已经存在的表上创造索引创设普通索引复制代码 代码如下:mysql create index index7_id
on example0(idState of Qatar;Query OK, 0 rows affected (0.07 secState of QatarRecords: 0
Duplicates: 0 Warnings:
0这里在现有表的id字段上创建了一条名称为index7_id的索引

创办唯生机勃勃性索引复制代码 代码如下:mysql
create unique index index8_id on example1(course_idState of Qatar;Query OK, 0 rows
affected (0.16 sec卡塔尔国Records: 0 Duplicates: 0 Warnings:
0此处只供给在index关键字前边加上unique就能够

至于表中的course_id字段,最要也安装唯大器晚成性限制标准

创建全文索引复制代码 代码如下:mysql
create fulltext index index9_info on example2(info卡塔尔国;Query OK, 0 rows
affected (0.07 sec卡塔尔Records: 0 Duplicates: 0 Warnings:
0fulltext关键字用来安装全文引擎,此处的表必得是MyISAM存款和储蓄引擎

创办单列索引复制代码 代码如下:mysql
create index index10_addr on example3(address(4卡塔尔卡塔尔;Query OK, 0 rows
affected (0.16 sec卡塔尔国Records: 0 Duplicates: 0 Warnings:
0此表中address字段的长度是20,这里只询问4字节,没有必要全方位查询

开创多列索引复制代码 代码如下:mysql
create index index11_na on example4(name,addressState of Qatar;Query OK, 0 rows
affected (0.16 secState of QatarRecords: 0 Duplicates: 0 Warnings:
0索引创造好以往,查询中必需有name字段本领接纳

始建空间引得复制代码 代码如下:mysql
create spatial index index12_line on example5(space卡塔尔;Query OK, 0 rows
affected (0.07 sec卡塔尔国Records: 0 Duplicates: 0 Warnings:
0这里要求当心存款和储蓄引擎是MyISAM,还大概有空间数据类型

用alter table语句来成立索引创立普通索引复制代码 代码如下:mysql alter table example6
add index index13_n(name(20));Query OK, 0 rows affected (0.16
sec)Records: 0 Duplicates: 0 Warnings: 0成立唯生机勃勃性索引复制代码 代码如下:mysql alter table example7
add unique index index14_id(id);Query OK, 0 rows affected (0.20
sec)Records: 0 Duplicates: 0 Warnings: 0始建全文索引复制代码 代码如下:mysql alter table example8
add fulltext index index15_info(info);Query OK, 0 rows affected (0.08
sec)Records: 0 Duplicates: 0 Warnings: 0创办单列索引复制代码 代码如下:mysql alter table example9
add index index16_addr(address(4));Query OK, 0 rows affected (0.16
sec)Records: 0 Duplicates: 0 Warnings: 0开创多列索引复制代码 代码如下:mysql alter table example10
add index index17_in(id,name);Query OK, 0 rows affected (0.16
sec)Records: 0 Duplicates: 0 Warnings: 0创建空间引得复制代码 代码如下:mysql alter table example11
add spatial index index18_space(space卡塔尔国;Query OK, 0 rows affected (0.06
secState of QatarRecords: 0 Duplicates: 0 Warnings:
0到此,三种操作情势,每一个索引类别的创设就都列举了

对此索引,主要的是领略索引的定义,驾驭索引的项目

越多的是团结的应用经验

最后来拜谒索引的去除

删除索引复制代码 代码如下:mysql drop
index index18_space on example11;Query OK, 0 rows affected (0.08
secState of QatarRecords: 0 Duplicates: 0 Warnings: 0这里是刚刚创建的一条索引

其中index18_space是索引名,example11是表名