Oracle百萬資料的分頁查詢和測試案例

2021-05-25 08:52:38 字數 1869 閱讀 4319

一、fastunit平台的分頁機制

使用2次查詢來實現分頁:

1. 獲取總記錄數

count 

(  * 

)  from 

t  where

2. 利用oracle的rownum獲取指定頁的資料

* from 

(  select 

row_. 

*  , rownum rownum_  

from 

(  select 

* from 

t  where) row_  

where 

rownum  

<= 

?)  

where 

rownum_ 

?(根據上一步得到的總記錄數以及每頁行數、當前頁碼計算出起始行號和結束行號,設定在上述sql語句的「?」處)

二、測試環境

作業系統:windows xp professional sp1

cpu:迅馳1.6g

物理記憶體:1g

應用伺服器:tomcat 5.5.23

資料庫:oracle92(預設設定)

三、測試物件

fastunit平台的日誌表,指令碼如下:

table 

accesslog(

number 

(  10 

,  0 

)  not 

null 

,number 

(  1 

,  0 

),varchar2 

(  50 

),varchar2 

(  50 

),varchar2 

(  50 

),varchar2 

(  50 

),varchar2 

(  50 

),varchar2 

(  50 

),varchar2 

(  50 

),varchar2 

(  50 

),varchar2 

(  50 

),varchar2 

(  50 

),number 

(  5 

,  0 

),number 

(  1 

,  0 

),key 

(id)

index 

al_ct_idx  

on accesslog (curtime);

四、測試結果

本案例中,資料庫除了索引未使用其他優化措施。

僅設定curtime條件時(使用索引),平均響應時間為620毫秒(如下圖所示);

對比:不設定任何條件時,平均響應時間為2300毫秒;

僅設定userid條件時(未使用索引),平均響應時間為5100毫秒。

(圖中的測試資料由fastunit的***統計的,用來跟蹤程序內各斷點之間時間消耗、資料庫連線數、查詢次數、增刪改次數、記憶體消耗等,可以直觀的判斷出系統瓶頸的位置,為系統優化提供支援。)

五、對於大表的一般性優化措施

1. 表結構設計原則:資料型別盡量小(占用空間少,磁碟讀入較快)、單獨設定表空間

2. 應用程式:合理設計業務、sql語句優化

3. 合理使用索引:只建立需要的索引,根據需要使用多列索引,存放於單獨的表空間

4. 資料庫設定:記憶體分配、查詢優化器、分割槽、分表等

5. 硬體環境:硬碟、cpu、記憶體、網路頻寬

oracle高效分頁儲存過程(百萬資料級)

create or replace procedure pager page in number,資料頁數,從1開始 pagesize in number,每頁大小 tablename nvarchar2,表名strwhere nvarchar2,where條件 orderby nvarchar2,...

百萬級量的資料分頁查詢如何優化?

方法 1 直接使用資料庫提供的 sql 語句 語句樣式 mysql 中,可用如下方法 select from 表名稱 limit m,n 適應場景 適用於資料量較少的情況 元組百 千級 原因 缺點 全表掃瞄,速度會很慢 且 有的資料庫結果集返回不穩定 如某次返 回 1,2,3,另外的一次返回 2,1...

MySQL百萬級資料分頁查詢優化方案

當需要從資料庫查詢的表有上萬條記錄的時候,一次性查詢所有結果會變得很慢,特別是隨著資料量的增加特別明顯,這時需要使用分頁查詢。對於資料庫分頁查詢,也有很多種方法和優化的點。下面簡單說一下我知道的一些方法。準備工作 為了對下面列舉的一些優化進行測試,下面針對已有的一張表進行說明。表名 order hi...