mysql中索引的类型
一般可分为四类:
普通索引
这是最基本的索引,它没有任何限制。它有以下几种创建方式:
1.创建索引
代码如下:
create index indexname on mytable(username(length));
如果是 char,varchar 类型,length 可以小于字段实际长度;如果是 blob 和 text 类型,必须指定 length,下同。
2.修改表结构
代码如下:
alter mytable add index [indexname] on (username(length))
创建表的时候直接指定
create table mytable( id int not null, username varchar(16) not null, index [indexname] (username(length)) );
删除索引的语法:
drop index [indexname] on mytable;
唯一索引
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
create unique index indexname on mytable(username(length))
修改表结构:
alter mytable add unique [indexname] on (username(length))
创建表的时候直接指定:
create table mytable( id int not null, username varchar(16) not null, unique [indexname] (username(length)) );
主键索引
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:
代码如下:
create table mytable( id int not null, username varchar(16) not null, primary key(id) );
当然也可以用 alter 命令。记住:一个表只能有一个主键。
联合索引
为了形象地对比单列索引和组合索引,为表添加多个字段:
create table mytable( id int not null, username varchar(16) not null, city varchar(50) not null, age int not null );
为了进一步榨取 mysql 的效率,就要考虑建立组合索引。就是将 name, city, age 建到一个索引里:
代码如下:
alter table mytable add index name_city_age (name(10),city,age);
索引用不上的情况
索引不是每次都可以生效的,如果我们操作不对,那么很有可能是走全表扫描而不是走的索引,explain 中的 possible_key、key_len 以及 key 参数都可以分析我们的 sql 语句是否用到了索引。
以下情况将会导致索引失效
以上都可以使用 explain 进行测试是否用到了索引。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对移动技术网的支持。
如对本文有疑问, 点击进行留言回复!!
服务器Centos部署MySql并连接Navicat过程详解
网友评论