当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL索引操作命令小结

MySQL索引操作命令小结

2017年12月12日  | 移动技术网IT编程  | 我要评论

创建索引

创建索引的语法是:

create [unique|fulltext|spatial] index index_name
  [using index_type]
  on tbl_name (index_col_name,...)
 
index_col_name:
  col_name [(length)] [asc | desc]

对于char和varchar列,只用一列的一部分就可创建索引。创建索引时,使用col_name(length)语法,对前缀编制索引。前缀包括每列值的前length个字符。blob和text列也可以编制索引,但是必须给出前缀长度。

此处展示的语句用于创建一个索引,索引使用列名称的前10个字符。

create index part_of_name on customer (name(10));

因为多数名称的前10个字符通常不同,所以此索引不会比使用列的全名创建的索引速度慢很多。另外,使用列的一部分创建索引可以使索引文件大大减小,从而节省了大量的磁盘空间,有可能提高insert操作的速度。

前缀最长为255字节。对于myisam和innodb表,前缀最长为1000字节。注意前缀的限长以字节计,而create index语句中的前缀长度指的是字符的数目。对于使用多字节字符集的列,在指定列的前缀长度时,要考虑这一点。

在mysql中:

·只有当您正在使用myisam, innodb或bdb表类型时,您可以向有null值的列中添加索引。

·只有当您正在使用myisam, bdb或innodb表类型时,您可以向blob或text列中添加索引。

一个index_col_name规约可以以asc或desc为结尾。这些关键词将来可以扩展,用于指定递增或递减索引值存储。目前,这些关键词被分析,但是被忽略;索引值均以递增顺序存储。

部分储存引擎允许在创建索引时指定索引类型。index_type指定语句的语法是using type_name。不同的储存引擎所支持的type_name值已显示在下表中。如果列有多个索引类型,当没有指定index_type时,第一个类型是默认值。

存储引擎

允许的索引类型

myisam

btree

innodb

btree

memory/heap

hash, btree

示例:

create table lookup (id int) engine = memory;
create index id_index using btree on lookup (id);

type type_name可以作为using type_name的同义词,用于指定索引类型。但是,using是首选的格式。另外,在索引规约语法中,位于索引类型前面的索引名称不能使用type。这是因为,与using不同,type不是保留词,因此会被认为是一个索引名称。

如果您指定的索引类型在给定的储存引擎中不合法,但是有其它的索引类型适合引擎使用,并且不会影响查询功能,则引擎应使用此类型。

fulltext索引只能对char, varchar和text列编制索引,并且只能在myisam表中编制。

spatial索引只能对空间列编制索引,并且只能在myisam表中编制。

使用alter的方法创建索引

alter table table_name add index index_name (column_list) ;
alter table table_name add unique (column_list) ;
alter table table_name add primary key (column_list) ;

查询索引

show index from table_name;

删除索引

drop index index_name on table_name ;
alter table table_name drop index index_name ;
alter table table_name drop primary key ;

其中,在前面的两条语句中,都删除了table_name中的索引index_name。而在最后一条语句中,只在删除primary key索引中使用,因为一个表只可能有一个primary key索引,因此不需要指定索引名。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网