大型web運用中我們都知道會採用多資料庫的方式來儲存大量資料,這個過程中我們就會採用對資料的垂直劃分或者水平劃分來組織資料。當然web查詢就會涉及到分頁,如果採用的水平劃分資料,那麼查詢分頁的資料就可能分布在不同的資料庫中,那麼這個時候我們如何來分頁呢?
其實原理很簡單,比如,我要查詢第11頁的資料,這裡每頁資料是20條,那麼第11頁資料的記錄位置就在201開始到210的位置結束。假設現在我們的記錄水平分割在了3個資料庫中(或者3張表中),此時,我們就需要這樣來進行分頁,首先從每個資料庫(每張表)中分別都查出前210條資料,這樣這裡就有210*3=630條。然後對這630條資料進行排序,從中取出第201條到210條的記錄,這就是我們需要的記錄。
這個處理過程中,我們必須要注意的有幾點:
第一、在每個資料庫中我們的查詢條件,排序方式都必須相同 ;
第二、查出之後的所有記錄進行合併時的排序方式必須和前面的排序方式相同(這裡的排序多半是在記憶體中進行)
第三、總記錄數是幾個資料庫中符合條件的資料總和。
以上就是多資料庫或者多表查詢分頁的原理,當然,這個分頁有乙個明顯的缺點就是查詢的頁碼越大效率就越低,因為頁碼越大每次要查詢合併排序的記錄就越多,這一點得謹慎考慮,因此在分頁查詢時盡量限制查詢返回的記錄條數,盡量精確查詢。
多資料庫分頁原理介紹
大型web運用中我們都知道會採用多資料庫的方式來儲存大量資料,這個過程中我們就會採用對資料的垂直劃分或者水平劃分來組織資料。當然web查詢就會涉及到分頁,如果採用的水平劃分資料,那麼查詢分頁的資料就可能分布在不同的資料庫中,那麼這個時候我們如何來分頁呢?其實原理很簡單,比如,我要查詢第11頁的資料,...
多資料庫分頁原理介紹
其實原理很簡單,比如,我要查詢第11頁的資料,這裡每頁資料是20條,那麼第11頁資料的記錄位置就在201開始到210的位置結束。假設現在我們的記錄水平分割在了3個資料庫中 或者3張表中 此時,我們就需要這樣來進行分頁,首先從每個資料庫 每張表 中分別都查出前210條資料,這樣這裡就有210 3 63...
oracle資料庫分頁原理
oracle資料庫的rownum 在oracle資料庫中,分頁方式沒有mysql這樣簡單,它需要依靠rownum來實現.rownum表示一條記錄的行號,值得注意的是它在獲取每一行後才賦予.因此,想指定rownum的區間來取得分頁資料在一層查詢語句中是無法做到的,要分頁還要進行一次查詢.select ...