mysql 使用索引提高查询速度
2019-02-17 本文已影响0人
百炼
当数据库数据量比较大时,使用索引优化查询速度
-- 建表语句
CREATE TABLE `t_1` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NULL DEFAULT NULL,
`ref_id` BIGINT(20) NOT NULL,
`salary` BIGINT(20) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
-- 插入两条数据
INSERT INTO `t_1` (`id`, `username`, `ref_id`, `salary`) VALUES (1, 'test1', 6, 7);
INSERT INTO `t_1` (`id`, `username`, `ref_id`, `salary`) VALUES (2, 'test0', 37, 37);
-- 多次执行此方法,向数据库快速插入百万级别的数据
INSERT INTO t_1(username, ref_id, salary) SELECT username, ref_id, salary FROM t_1;
-- 生成随机数据,使用数据看着更符合生产情况下的数据
UPDATE t_1 SET ref_id = RAND() * 1000 ,salary=RAND()*1000;
SELECT COUNT(1) FROM t_1;
-- 创建索引,当查询走此索引时,速度会变快
CREATE INDEX ref_id_index ON t_1 (ref_id) ;
ALTER TABLE T_1 DROP INDEX ref_id_index ;
SELECT COUNT(1) FROM T_1 WHERE ref_id = 88;
SET PROFILING =1;
SHOW PROFILES;
注意:执行记划只是预估(全表扫描或走索引),能通过执行计划大概评测出哪个会快一些,执行结果才是真正的运行结果。
