千萬條記錄分頁查詢優化

2021-09-25 01:24:37 字數 781 閱讀 8623

分頁查詢是最常用的場景之一,但通常也是最容易出問題的地方。比如對於下面簡單的語句,一般 dba 想到的辦法是在 type, name, create_time 欄位上加組合索引。這樣條件排序都能有效的利用到索引,效能迅速提公升。

select *from   tstb_logwhere  type = 'sqlstats'and name = 'slowlog'order  by create_timelimit  1000, 10;
好吧,可能90%以上的 dba 解決該問題就到此為止。但當 limit 子句變成 「limit 1000000,10」 時,程式設計師仍然會抱怨:我只取10條記錄為什麼還是慢?

要知道資料庫也並不知道第1000000條記錄從什麼地方開始,即使有索引也需要從頭計算一次。出現這種效能問題,多數情形下是程式設計師偷懶了。

。sql 重新設計如下:

select   *from     tstb_logwhere    type = 'sqlstats'and      name = 'slowlog'and      create_time > '2017-03-16 14:00:00'order by create_time limit 10;
在新設計下查詢時間基本固定,不會隨著資料量的增長而發生變化。

oracle分頁查詢千萬級優化

在做比對專案時,有表是3千萬多的資料,在頁面做分頁查詢時很卡40s,反正差不多一分鐘的時間,後來更了sql,優化了 就好了很多,4s就可以了 sql是取條數時不要用and,between這些 優化後的sql select from select c.a.rownum rn from tt crm c...

Oracle千萬條記錄的測試

客戶 訂單 訂單項 插入資料的儲存過程如下 create or replace procedure createusers is v sequ user number 19 v sequ order number 19 begin for v count in 1.1000000 loop inse...

mysql千萬級資料分頁查詢效能優化

1.直接用limit start,count分頁語句,也是我程式中用的方法 select from product limit start,count 當起始頁較小時,查詢沒有效能問題,我們分別看下從10,100,1000,10000開始分頁的執行時間 每頁取20條 如下 select from p...