| oracle mysql |
|
數(shù)據(jù)挖掘各類算法中,常常需要遍歷整個(gè)數(shù)據(jù)庫(表)?,F(xiàn)實(shí)中的數(shù)據(jù)庫可能十分大,往往不可能通過一個(gè)簡單的Select *的方式遍歷提取數(shù)據(jù)表內(nèi)的所有元組。 直接用Select * 的方式存在兩大問題,一是Select *過后,可能要等很久數(shù)據(jù)庫才能將所有信息提交完畢,第二是得到的結(jié)果可能是很大,遠(yuǎn)遠(yuǎn)超過內(nèi)存的限制。 現(xiàn)在各種主流的數(shù)據(jù)庫都支持了分頁查詢的方式。 以Oracle為例,通過rownum關(guān)鍵字可以獲取指定的行區(qū)間。 以MySQL為例,提供了limit關(guān)鍵字,更加方便獲取中間某區(qū)間的行數(shù)據(jù)。 Hibernate這樣的數(shù)據(jù)持久層提供的分頁查詢,可以屏蔽掉各個(gè)不同的數(shù)據(jù)庫之間具體SQL實(shí)現(xiàn)差異。 網(wǎng)上到處都可以搜尋到關(guān)于Hibernate內(nèi)部實(shí)現(xiàn)分頁查詢的解讀的文章。可以看到,Hibernate內(nèi)部也是通過rownum,limit這些關(guān)鍵字來實(shí)現(xiàn)分頁的。 |




