mysql-order by原理

測試數據創建

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

對應執行計劃執行計劃各個列解讀可以參考跳轉

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章