從Oracle關聯式資料庫中選取第m至第n行記錄

2021-09-30 02:50:49 字數 1192 閱讀 6803

我相信很多程式設計師朋友都遇到過這麼乙個問題,就是分頁顯示。

在做的時候,無論如何,我們都不應該把記錄全部讀到記憶體當中再選擇需要的記錄少了的話,還可以,要是表中有50萬條記錄呢?保證你會死掉  

最好的方法:  

我先問乙個問題:真的會有很多時間需要支援很多種資料庫的應用嗎?不是吧?  

如果的確真的是的話那麼分別實現一套方法吧,然後用dao模式來解決藕合度問題,把資料庫操作的事情單拉出來吧!  

下面給出oracle/sqlserver/mysql三種資料庫先出第m至第n條記錄的方法:  

獲取按照f1欄位公升序排序的,從m至n行記錄

注意,f1一定要做索引或主鍵,最好是主鍵

sqlserver

select t2.* from (select top n-m t1.* from (select top n * from tablename as t order by t.f1) as t1 order by t1.f1 desc) as t2 order by t2.f1

select t2.* from  

( select top 20 t1.* from  

( select top 500020 * from dbgen as t order by t.f1

)  as t1 order by t1.f1 desc

) as t2 order by t2.f1

oracle

select * from (select rownum r, t.* from tablename t where rm and t1.r <= m

select * from (select rownum r, t.* from dbtest t where rownum<300020) ss where ss.r > 300000 and ss.r <= 300020

mysql

最簡單

select * from tablename t order by t.f1 limit n,m-n+1

select * from dbtest t order by t.f1 limit 300000,20  

效能對比:

三者差不多少!

上面例項中的語句在50萬條記錄的表中選取第50萬左右的記錄20條,均不超過1秒。  

其它資料庫我相信也能找到差不多的方法。

a

從關聯式資料庫到非關聯式資料庫

看到不錯就轉了,感謝原文博主。原文連線 關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料...

oracle關聯式資料庫模型

1.1 關聯式資料庫中的一些術語 好吧,其實我第一次學習資料庫的時候,我特別的煩這些術語,本來很簡單的很容易懂的詞語,被他們整的。二維表 就是一張表,比如我們開啟excel,這裡可以粗略的看成乙個表的結構吧。所以說,關係的邏輯結構就是乙個二維表。關係 relation 對應我們平時看見的一張表。元組...

關聯式資料庫與非關聯式資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...