資料庫 分頁查詢優化

2021-10-11 21:30:13 字數 853 閱讀 5114

select

top10

*from admin

where adminid notin(

select

top1500000 adminid from admin)

使用not in會引發全表掃瞄(理論上會,由於資料庫會對查詢進行優化,所以實際我並不知道會不會),其用時如下

cpu 時間 = 562 毫秒,占用時間 = 562 毫秒。

如果id為自增,我們可以做如下改進

select

top10

*from admin

where adminid >

(select

max(t.adminid)

from

(select

top1500000 adminid from admin order

by adminid)

as t )

改進後用時如下

cpu 時間 = 125 毫秒,占用時間 = 125 毫秒

有的時候我們的分頁不必要做的那麼嚴謹,如下,如果adminid小於1500000的有1490000條,但你可以認為149萬就是150萬

select

top10

*from admin

where adminid >

1500000

改進後的用時

cpu 時間 = 0 毫秒,占用時間 = 0 毫秒 (它的輸出就是0,我沒有寫錯)

注:之前做過的乙個專案乙個表有上億條資料,然後公司使用時間戳作為主鍵,按某日某時某分到某日某時某分進行資料查詢,就是使用這種方式

mysql資料庫分頁查詢優化

原博 mysql單錶百萬資料記錄分頁效能優化 limit優化 當資料很多需要進行分頁查詢時 需要先查出第一條資料的id然後根據id查詢大於id的資料 limt 一頁的資料量 1.直接用limit start,count分頁語句,也是我程式中用的方法 select from product limit...

oracle資料庫優化 分頁查詢優化

在oracle12c以上出現fetch命令進行分頁查詢問題 sql select from 2 3 select a.rownum rn 4 from select from tab test 1 a 5 6 where rn between 21 and 40 sql分析 select from ...

資料庫查詢分頁。

csdn上推薦的,轉過來的。呵呵!表中主鍵必須為標識列,id int identity 1,1 1.分頁方案一 利用not in和select top分頁 語句形式 select top 頁記錄數量 from 表名 where id not in select top 每頁行數 頁數 1 id fr...