MySQL数据库索引类型
在数据量偏大的时候执行查询语句查询时间会变长,这时我们会根据需求在数据库中添加索引来加快查询效率。我们先来做个测试,不加索引和加索引下的效率对比。
在card_code列没加索引的时,查询时间如下,大概都在0.07秒。
我们来加上索引试试,加上后查询效率高了许多。
下面来看看索引的类型:
1.Normal普通索引
普通索引也是我们最常用的索引,在使用时限制很少。比如上面为dm_person_info表 的card_code列添加名为card_code_index的索引。
ALTER TABLE `dm_person_info` ADD INDEX card_code_index ( `card_code` );
2.Unique唯一索引
唯一索引列的值必须唯一,允许有空值。如果是组合索引的话,列值的组合必须唯一。
ALTER TABLE `table_name` ADD UNIQUE INDEX index_name (`column`)
我试着给card_code列加唯一索引,card_code列值不唯一,加不上。
3.Full Text全文索引
可在多列column上添加联合的全文索引,我们给居住地地址和户籍地址这两列加上索引。
注意: 旧版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上,MySQL5.6.24上InnoDB引擎也加入了全文索引,我的mysql版本是5.5的,所以InnoDB引擎的表格加不上全文索引,先修改为MyISAM。
ALTER TABLE `dm_person_info` ADD FULLTEXT INDEX address_index (`jzd_dz`, `hjdz`);
查询看看
select * from dm_person_info where MATCH (`jzd_dz`,`hjdz`) AGAINST ("shanghai anhui");
4.PRIMARY KEY主键索引
将一列设置为主键,即添加了主键索引,这个大家都了解,就不多介绍了。
ALTER TABLE `dm_person_info` ADD PRIMARY KEY (`rk_id`);