一、索引
1.1、索引的概念
数据库中的索引与书籍中的目录类似
在一本书中,无须阅读整本书,利用目录就可以快速査找所需信息
书中的目录是一个词语列表,其中注明了包含各个词的页码
数据库索引
是一个排序的列表,存储着索引值和这个值所对应的物理地址
无须对整个表进行扫描,通过物理地址就可以找到所需数据
是表中一列或者若干列值排序的方法
需要额外的磁盘空间
1.2、索引的作用
设置了合适的索引之后,数据库利用各种快速的定位技术,能够大大加快查询速率
特别是当表很大时,或者查询涉及到多个表时,使用索引可以成千上万倍地提高查询速度
可以降低数据库的IO成本,并且还可以降低数据库的排序成本
通过创建唯一性索引保证数据表数据的唯一性
可以加快表与表之间的连接
在使用分组和排序时,可大大减少分组和排序时间
1.3、索引的分类
1.3.1、普通索引
这是最基本的索引类型,而且它没有唯一性之类的限制
创建普通索引的方式
(1)用create方法创建普通索引
mysql> create index index_age on info (age);
(2)用alter方法创建普通索引
mysql> alter table info add index index_age (age);
(3)创建表的时候创建普通索引
mysql> create table user (
-> id int(4) not null primary key auto_increment,
-> name varchar(10) not null,
-> score decimal not null,
-> hobby int(2) not null default '1',
-> index index_scrore (score));
1.3.2、唯一索引
这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一
主键
创建唯一索引的方式
(1)用create unique方法,创建唯一索引
mysql> create unique index unique_name on info (name);
(2)用alter table方法创建唯一索引
mysql> alter table info add unique index_name (name);
(3)用新建表的方法创建唯一索引
mysql> create table user1 (
-> id int(4) not null primary key auto_increment,
-> name varchar(10) not null,
-> score decimal not null,
-> hobby int(2