测试数据创建
1.新建表
CREATE TABLE `user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `city` varchar(16) NOT NULL COMMENT '城市', `name` varchar(16) NOT NULL COMMENT '姓名', `age` int(11) NOT NULL COMMENT '年龄', `addr` varchar(128) DEFAULT NULL COMMENT '地址', PRIMARY KEY (`id`), KEY `city` (`city`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
2.刷测试数据存储过程新建
-- 声明存储过程 DELIMITER // CREATE PROCEDURE callback() begin declare num int; set num = 1; LOOP_LABLE : loop INSERT INTO user_info(id,city,`name`,age,addr) VALUES(num,CONCAT("成都", num),CONCAT("小李", num),CONCAT(num),CONCAT("高新区",num)); set num = num + 1; if num >= 100000 then leave LOOP_LABLE; end if; end loop; end;
3.执行存储过程
CALL callback();
4.删除存储过程
drop procedure IF EXISTS callback;
5.再重新创建存储过程并执行
CREATE PROCEDURE callback() begin declare num int; set num = 100000; LOOP_LABLE : loop INSERT INTO user_info(id,city,`name`,age,addr) VALUES(num,"广州",CONCAT("小李", num),CONCAT(num),CONCAT("高新区",num)); set num = num + 1; if num >= 200000 then leave LOOP_LABLE; end if; end loop; end;
两种排序算法
全字段排序
我们在工作中常常使用这一的写法
select * from user_info i where i.city='成都1' order by age desc limit 400,100
对应执行计划执行计划各个列解读可以参考跳转