mysql索引

来源:互联网 发布:水晶高跟凉鞋 知乎 编辑:程序博客网 时间:2024/05/10 02:32
注意:用索引后能节省检索的时间但是也会影响插入的速度,因为插入数据后系统会按照索引进行排序。如果有大量记录需要插入最好先删除表中的索引然后插入数据。插入后再创建索引。  普通索引:创建索引时,不附加任何限制条件。  唯一索引:创建该索引时,限制该索引的值必须是唯一的。主键是一种特殊唯一性索引。  全文索引:使用FULLTEXT参数可以设置索引为全文索引。全文索引只能创建在char、varchar或text类型字段上。只有MyISAM存储引擎支持全文检索。默认情况下,全文索引搜索执行方式不区分大小写。但索引列使用二进制排序后可以执行区分大小写的全文索引。  单列索引:在单个字段上创建索引。只根据该字段进行索引。单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引。只要保证该索引只对应一个字段即可。  多列索引:在表的多个字段上创建一个索引。该索引指向创建时对应的多个字段,可以通过这几个字段进行查询。但是,只有查询条件中使用了这些字段中第一个字段时,索引才会被使用。如,在表中的id、name和sex字段上建立一个多列索引,那么只有查询条件使用了id字段时该索引才会被使用。  空间索引:使用SPATIAL参数可以设置索引为空间索引。空间索引只能建立在空间数据类型上,这样可以提高系统获取空间数据的效率。空间数据类型包括GEOMETRY、POINT、LINESTRING、POLYGON等。目前只有MyISAM存储引擎支持空间检索且索引的字段不能为空值。  一、创建表时创建索引格式:create table index1(id int,name varcahr(10),[unique|fulltext|spatial] index | key [别名] ( 属性名1 [(长度)] [asc|desc]))注:index和key参数用来指定字段为索引的,两哲选择其中之一就行,作用是一样的。‘别名’也是可选的参数,用来给索引取新名称,属性名1参数知道索引对应的字段的名称,该字段必须是前面定义好的字段,‘长度’是可选参数指索引的长度,必须是字符串类型才可以使用。asc|desc都是可选参数表示升降序排列。  ##查看索引是否被使用:explain select * from index1 where 索引列=某值 \G,结果中possible_keys 和key值都为索引名,说明该索引已经存在,extra:using index condition 表示已经开始起作用。例:1、普票索引create table index1(id int,name varchar(20),sex boolean,index(id))2、创建唯一索引create table index1(id int unique,name varchar(20),sex boolean,unique index index2_id(id asc))注:这里的id字段可以没有进行唯一性约束,也可以在该字段上成功创建唯一性索引。但是这样可能达不到提高查询速度的目的。3、创建全文索引create table index3(id int,info varchar(20),fulltext index index3_info(info))engine=MyISAM;  a、全文索引查找时的用法    match(全文索引名)against('keyword')  b、全文索引的停止词    全文索引不针对非常频繁的词做索引  c、索引对中文意义不大,因为中文电脑很难区分词,英文可以有空格区分。    例:select * from member where match(intro) against ('database');4、创建单列索引在表的单个字段上创建索引create table index4(id int,subject varchar(30),index index4_st(subject(10)))注:subject字段长度为30而索引长度只有10,目的是为了提高查询速度。对于字符型数据可以不用查询全部信息,而只查询其前面的若干字符信息。5、创建多列索引create table index5(id int,name varchar(20),sex char(4),index index5_ns(name,sex))二、在已经存在的表上创建索引1、create语句创建索引格式:create [unique|fulltext|spatial] index 索引名 on 表名 (属性名 [(长度)] [asc|desc]);例:创建普通索引create index index7_id on example0(id);2、alter table语句创建索引格式:alter table 表名 add [unique|fulltext|spatial] index 索引名(属性名 [(长度)] [asc|desc]);\\不加索引名时,默认列名为索引名。例:创建普通索引 alter table example0 add index index13_name(name(20));三、删除索引1、格式:drop index 索引名 on 表名; 注:查看索引名可以用show create table 表名  \G2、格式:alter table 表名 drop index 索引名; 四、查看索引查看索引 show index from pet1;

0 0
原创粉丝点击