百萬條資料如何進行分頁查詢

2021-09-13 11:27:16 字數 1913 閱讀 3890

今天面試被問到一張表 有500w條資料,如何進行分頁查詢,瞬間不知道怎麼回答,平時工作中沒接觸到這麼大的資料量。

所以回家自己去實驗一下:

建立一張user表

create table `user` (

`id` bigint(20) not null auto_increment,

`username` varchar(100) default null comment '使用者名稱',

`password` varchar(100) default null comment '密碼',

`name` varchar(100) default null comment '姓名',

primary key (`id`)

) engine=innodb auto_increment=1862452 default charset=utf8;

接著我們給他添一點資料:

begin

declare i int default 1;

while i<=1000000 do

insert into user(username,password,name) values(concat(i,'老李'),'2222','老李');

set i = i+1;

end while;

end $

call proc_initdata();

我新增了100w條資料我的電腦比較差用了十幾分鐘,當然你也可以選擇不建主鍵,這樣新增的話速度會快很多(主鍵會建主鍵索引)。

現在我們來開始測試查詢:

使用傳統的

ok現在看一下sql的執行過程:

全表掃瞄 不走索引的

將sql改造一下使用子查詢

效果很明顯ok 速度提公升了好4倍多

ok我們現在看看  執行sql過程:

很明顯走了索引  子查詢走了全表索引掃瞄index 主sql走的是range

當然這個還有另外一張寫法

效率和上面的差不多

ok現在做個簡單的改造

這個效率提高了很多

range單個索引

百萬條資料分頁

寫出 之前,先說明一下原理,比較簡單。有一張表 test 如下 結構是 id 自動編號 txt 假設40條記錄 現在要每頁顯示10條記錄,則每頁要顯示的資料應該是 第一頁 10 第二頁 11 20 第三頁 21 30 第四頁 31 40 如要顯示第一頁,最簡單的方法就是 select top 10 ...

SQL高效分頁(百萬條資料)

select top 頁大小 from select row number over order by id as rownumber,from table1 as a where rownumber 頁大小 頁數 1 註解 首先利用row number 為table1表的每一行新增乙個行號,給行號...

Mysql通過分頁查詢處理百萬條資料(單執行緒)

mysql查詢百萬資料 親測!資料遷移,800萬資料,先查詢後新增,三個半小時完成 查詢方法如下 查詢 param args public static void main string args throws exception 開始查詢的行數 int bindex 0 arraylist lis...