index ---- 普通索引,数据可以重复,没有任何限制。 unique ---- 唯一索引,要求索引列的值必须唯一,但允许有空值;如果是组合索引,那么列值的组合必须唯一。
primary key ---- 主键索引,是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值,一般是在创建表的同时创建主键索引。
组合索引 ---- 在多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。
fulltext ---- 全文索引,是对于大表的文本域:char,varchar,text列才能创建全文索引,主要用于查找文本中的关键字,并不是直接与索引中的值进行比较。fulltext更像是一个搜索引擎,配合match against操作使用,而不是一般的where语句加like。
注:全文索引目前只有MyISAM存储引擎支持全文索引,InnoDB引擎5.6以下版本还不支持全文索引
所有存储引擎对每个表至少支持16个索引,总索引长度至少为256字节,索引有两种存储类型,包括B型树索引和哈希索引。
索引可以提高查询的速度,但是创建和维护索引需要耗费时间,同时也会影响插入的速度,如果需要插入大量的数据时,最好是先删除索引,插入数据后再建立索引。 MyISAM引擎使用B+Tree作为索引结构,InnoDB引擎也使用B+Tree作为索引结构。
1.PRIMARY KEY(主键索引)
ALTER TABLE sys_software_upgrade ADD PRIMARY KEY ( id );
主键索引一般不需要特别去创建,就是id。一般在建表时已经建好了。具有唯一性。 2.UNIQUE(唯一索引)
ALTER TABLE sys_software_upgrade ADD UNIQUE (application_ids ); 唯一索引注意是该字段不能重复,也是具有唯一性。跟主键一样。比如说身份证号码不能重复,账号不能重复等,具有唯一性的字段。 否则会报错:Duplicate entry ‘值’ for key ‘字段名’。如果你在插入或修改账号时,提示此错误说明该字段 做了唯一性约束。 以上字段,如果数据是0,就代表其具有唯一性,独一无二。所以插入数据时报错。
3.INDEX(普通索引)
ALTER TABLE sys_software_upgrade ADD INDEX index_name ( application_ids );
4.FULLTEXT(全文索引)
ALTER TABLE sys_software_upgrade ADD FULLTEXT ( application_ids );
5.多列索引
ALTER TABLE sys_software_upgrade ADD INDEX index_name ( application_ids, close_type, status );
在navicat中显示:
1.UNIQUE(唯一索引)
CREATE UNIQUE INDEX index_name ON `sys_software_upgrade` (`application_ids` );2.INDEX(普通索引)
CREATE INDEX index_name ON `sys_software_upgrade` ( `application_ids` );3.多列索引
CREATE INDEX index_name ON `sys_software_upgrade` ( `application_ids`, `close_type`, `status` );PRIMARY KEY(主键索引)
ALTER TABLE sys_software_upgrade DROP PRIMARY KEY ;
INDEX(普通索引)或UNIQUE(唯一索引) ALTER TABLE sys_software_upgrade DROP INDEX index_name;
mysql>DROP INDEX index_name ON sys_software_upgrade
值越大,那么恭喜你,你的系统高效的使用了索引,一切运转良好。
假设index(a,b,c)
最左前缀匹配:模糊查询时,使用%匹配时:’a%‘会使用索引,’%a‘不会使用索引 条件中有or,索引不会生效 a and c,a生效,c不生效 b and c,都不生效 a and b > 5 and c,a和b生效,c不生效。