上篇讲述了一下mysql索引的应用,本篇则主要针对索引命令进行一下总结,依旧拿employees为例说明。
首先要知道索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引。MyISAM和InnoDB存储引擎:只支持BTREE索引,也就是说默认使用BTREE,不能够更换。MEMORY/HEAP存储引擎:支持HASH和BTREE索引。
主键索引、唯一索引:
主键和主键索引:
- 主键一定是唯一性索引,唯一性索引并不一定就是主键。主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。
- 一个表中可以有多个唯一性索引,但只能有一个主键。
- 主键列不允许空值,而唯一性索引列允许空值。
- 索引可以提高查询的速度。
创建主键索引:
//为emp_no创建主键索引
alter table employees add primary KEY(emp_no);
创建唯一索引:
//为test表中的seller_id字段添加唯一索引
alter table test add unique index(seller_id);
普通索引:
MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
//为first_name创建唯一索引
alter table employees add index first_name (first_name);
联合索引:
又称复合索引;Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。
//为employees表中的birth_date, first_name, last_name创建联合索引
alter table employees add index bd_fn_ln (birth_date, first_name, last_name);
全文索引:
全文索引只能适用于MyISAM引擎,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引。全文索引其实就是根据某个关键字,全文搜索,比如有一个字段内容为“北京博物馆拍卖正在进行中……”,那么当输入“博物馆”几个关键字的时候,则会把该条记录搜索出来。