索引类型
1.主键索引:PRIMARY KEY,只有一个列作为主键,唯一标识,不可重复;
2.唯一索引:UNIQUE,唯一性索引和“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即值必须唯一,同一张表里的多个列都可以设置唯一索引。
3.普通索引:NORMAL,一张表可以创建多个普通索引,一个普通索引可以包含多个字段,允许数据重复,允许 NULL 值插入;(是我们经常使用到的索引)
4.全文索引:FULLTEXT,在特定的数据库引擎下才支持,作用是快速定位数据。
5.多列索引:让搜索关键词更高效的一种索引。
使用案例
##创建一个测试表
CREATE TABLE `index_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`create_date` date DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8;
###创建一个存储函数 (插入1000000条数据)
DROP PROCEDURE IF EXISTS proc_initData;
DELIMITER $
CREATE PROCEDURE proc_initData()
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE n VARCHAR(64) DEFAULT '语音助手';
WHILE i<=1000000 DO
INSERT INTO index_test(id,name,create_date) VALUES(i,n,now());
SET i = i+1,n = '语音助手',n=CONCAT(n,i);
END WHILE;
END $
##最后执行函数
CALL proc_initData();
###创建删除表函数
DROP PROCEDURE if EXISTS pro_deleteData;
DELIMITER $
create procedure pro_deleteData()
BEGIN
delete from index_test;
END $
##执行删除函数
CALL pro_deleteData();
#查询总数量
select count(id) from index_test;
#添加普通索引
ALTER TABLE `index_test` ADD INDEX index_name ( `name` )
#查询
select * from index_test where name ='语音助手8888'
没加索引查询耗时:0.220秒
加上普通索引查询耗时:0.017秒

本文介绍了MySQL中不同类型的索引,包括主键、唯一、普通、全文和多列索引,并通过一个实际案例展示了在百万数据上加普通索引前后的查询速度对比,加索引后查询时间从0.220秒降至0.017秒,显著提升了查询效率。
2918

被折叠的 条评论
为什么被折叠?



