sql分頁優化

2022-04-21 17:10:15 字數 750 閱讀 2836

注意查詢的資料佔總資料達到一定量的時候可能導致索引失效。可以用limit或者指定列縮小資料區域可以解決。

前提用order by分頁

limit分頁在兩三萬左右時可以使用,超過十萬條記錄時要先查詢出前n-1頁的時間最大值max(date),以這個為開始時間。這裡變動的引數只有下面的300000,這裡為查詢第30001頁的資料。

300000為pagerow*(page-1)得來。

select

*from

tbl

where sysdate >(select

max(sysdate) from (select sysdate from tbl where sysdate>=

'2018-03-01 00:00:00

'order

by sysdate asc limit 0,300000

) aa)

and sysdate <=

'2019-08-27 23:59:59

'order

by sysdate limit 0,10

和用自增id每次用最大id作為引數查下10條原理一樣。

40w表 left join 40w表,在使用索引情況下,直接limit是15秒,使用查詢前n-1頁最大日期在limit是6秒。

一般的分頁列表會要求返回記錄總條數,這時候不是獲取列表資料,不必要關聯所有的表。當count百萬級的資料時一點關聯表就會很慢。解決方法是根據引數動態left join表。

SQL分頁查詢優化

基於如下基礎分頁方案 select top 頁大小 from table1 where id select max id from select top 頁碼 1 頁大小 id from table1 order by id as t 瓶頸 order by id 隨著分頁數的上公升,儘管只選取了i...

SQL 分頁查詢優化

先使用範圍查詢定位 id 或者索引 然後再使用索引進行定位資料,能夠提高好幾倍查詢速度。即先 select id,然後再 select select from orders history where type 8 limit 1000,10 select from orders history w...

SQL優化案例 RowNumber分頁

將業務語句翻譯成sql語句不僅是一門技術,還是一門藝術。下面拿我們程式開發工程師最常用的row number 分頁作為乙個典型案例來說明。先來看看我們最常見的分頁的樣子 的確,這樣的寫法很符合我們的思維邏輯,並且我們在recid上建立非聚集索引,那麼它的效率看上去也是不錯的。當然根據這條sql,最佳...