mysql索引
一、索引的概念
■ 数据库索引
●是一个排序的列表,存储着索引值和这个值所对应的物理地址
●无须对整个表进行扫描,通过物理地址就可以找到所需数据
●是表中一列或者若干列值排序的方法
● 需要额外的磁盘空间
● 索引伴随表而建立
二、索引的作用
■数据库利用各种快速定位技术,能够大大加快查询速率
■当表很大或查询涉及到多个表时,可以成千上万倍地提高查询速度
可以降低数据库的IO成本,并且还可以降低数据库的排序成本
■通过创建唯一性索引保证数据表数据的唯一性
■可以加快表与表之间的连接
■在使用分组和排序时,可大大减少分组和排序时间
三、普通索引
- 最基本的索引类型,没有唯一性之类的限制
- 创建普通索引的方式
3.1方法一
create unique index <索引的名字> on tablename(列的列表);
示例
create index info_index on info(id);
3.2、方法二
alter table 表名 add index 索引名 (字段(可选项));
示例
alter table tmp add index name_index (name);
3.3方法三
创建表时同时创建索引
四、唯一索引
● 与"普通索引"基本相同
●与普通索引的区别是索引列的所有值只能出现一次,即必须唯一●创建唯一索引的方式
CREATE UNIQUE INDEX index name ON table_name(column(length);ALTER TABLE table_name ADD UNIQUE index_name(column(length);
CREATE TABLE 'table(
id int(11)NOT NULL AUTO_INCREMENT
‘titl’ char(255)CHARACTER SET utf8 COLLATE utf8_general ciNOT NULL, content text CHARACTER SET utf8 COLLATE utf8_general_ciNULL, time’ int(10) NULL DEFAULT NULL PRIMARY KEY(id), INDEX index_ name (title(length)
示例
create unique index unique_name on info(name);
五、 主键索引
● 是一种特殊的唯一索引,指定为"PRIMARYKEY"
●一个表只能有一个主键,不允许有空值
●创建主键索引的方式
CREATE TABLE’table_name’(
id int(11)NOT NULLAUTO_INCREMENT, 'title char(255)NOT NULL, PRIMARY KEY(id));
六、组合索引(单列索引与多列索引)
● 可以是单列上创建的索引,也可以是在多列上创建的索引
● 最左原则,从左往右依次执行
●创建组合索引的方式CREATE TABLE user(name varchar(9), age int(3), sex tinyint(1),
INDEX user(name, age, sex)
七、全文索引
alter table 表名 add fulltext index addr-index(address);
注 不能添加数值字段
八、创建索引的原则依据
■表的主键、外键必须有索引
■记录数超过300行的表应该有索引
■经常与其他表进行连接的表,在连接字段上应该建立索引
■唯一性太差的字段不适合建立索引更新太频繁地字段不适合创建索引
查看索引语法
show index from 表名;
show keys from 表名;
表应该有索引
■经常与其他表进行连接的表,在连接字段上应该建立索引
■唯一性太差的字段不适合建立索引更新太频繁地字段不适合创建索引
查看索引语法
show index from 表名;
show keys from 表名;
\G 竖向显示索引信息