测试环境的电脑配置:Intel® Core™ i5-7500 CPU @ 3.40GHz 3.40 GHz,内存16G.mysql的版本为:5.7.24。
- 准备建表语句
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=626840 DEFAULT CHARSET=utf8;
- 准备存储语句,计划插入50万条
DELIMITER $$
CREATE PROCEDURE insert_many_i_data () BEGIN
DECLARE
i INT;
SET i = 0;
WHILE
i < 500000 DO
SET i = i + 1;
INSERT INTO test ( username, `password` )
VALUES
( i, 1 );
END WHILE;
END $$
- 开始测试,执行存储过程
-- 执行存储过程
CALL insert_many_i_data2 ()
-- 查看总条数
SELECT count(1) FROM test
-- 通过主键查询
SELECT id FROM test WHERE id = 7821
-- 通过无索引进行查询
SELECT id FROM test WHERE username = 7821
- 顺序截图
通过结果可以看出,有无索引可以差将近十倍。所以再数据量达到千万时,或者百万数据关联查询经常使用的字段是需要加上索引的。