一、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...