資料庫中的分頁技術

2021-08-30 04:02:42 字數 1131 閱讀 6663

1、oracle使用偽列rownum

select *, rownum from hsr_report r where r.rownum between 1 and 10;

2、mysql使用關鍵字limit

select * from hsr_report r limit 1,10;

這裡有個問題,limit的格式是limit offset,length,當偏移量大於一定的值(比如10000)時mysql執行的效率會明顯降低,比如

select * from hsr_report r limit 10000,100;

此時乙個比較好的提高效率的解決方案是使用子查詢

select * from hsr_report r where r.id >= (select r.id from r limit 10000,1) limit 100;

雖然看起來沒什麼不一樣的地反,只是把一步分成兩步,可是效率卻提高了。有這樣乙個測試資料:

--mysql>show profiles\g

# *************************** 6. row ***************************

# query_id: 6

# duration: 0.09956700

# query: select * from member limit 100000, 100

# *************************** 7. row ***************************

# query_id: 7

# duration: 0.02447700

# query: select * from member where memberid >= (select memberid from member limit 100000,1) limit 100

3、sqlserver中有個top,但是缺點是不能從中間取一段來顯示

暫時就是這樣子理解,用多了再慢慢深入

資料庫中的分頁技術

這個帖子很好,所以把內容記錄下來 oracle的分頁查詢語句基本上可以按照本文給出的格式來進行套用。分頁查詢格式 select from select a.rownum rn from select from table name a where rownum 40 where rn 21 其中最內...

資料庫分頁技術

1 無order by排序的寫法。效率最高 經過測試,此方法成本最低,只巢狀一層,速度最快!即使查詢的資料量再大,也幾乎不受影響,速度依然!select from select rownum as rowno,t.from k task t where flight date between to ...

SQL 資料庫分頁技術

分頁方案一 利用not in和select top分頁 語句形式 select top 10 from testtable where id not in select top 20 id from testtable order by id order by id select top 頁大小 f...