採用access資料庫有許多優點,比如資料庫無須專門的資料庫空間,使用,備份,遷移也非常方便。
但一旦資料量到達上萬條,上十萬條甚至更多的時候,access的大資料量的列表分頁效率問題就出現了。
用普通的recordset方法來分頁會非常非常慢。
所以從sql語句底層,找到高效率的分頁方法才能優化效率,提高速度。
本文不再討論用adodb.recordset,和sql語句裡的not in或者max等方法。
因為這幾種方法已經被證明無法承擔起大資料量的分頁任務。
給大家推薦的是雙top法高效率的access
分頁的sql語句。
先直接給sql語句,然後再分析
select * from
(select top "&pagesize&" * from
(select top "&page*pagesize&" 字段 from 表 order by id desc)
order by id)
order by id desc
mssql實現分頁的儲存過程
建立表:
create table [testtable] (
[id] [int] identity (1, 1) not null ,
[firstname] [nvarchar] (100) collate chinese_prc_ci_as null ,
[lastname] [nvarchar] (100) collate chinese_prc_ci_as null ,
[country] [nvarchar] (50) collate chinese_prc_ci_as null ,
[note] [nvarchar] (2000) collate chinese_prc_ci_as null
) on [primary]
goset identity_insert testtable on
declare @i int
set @i=1
while @i<=20000
begin
insert into testtable([id], firstname, lastname, country,note) values(@i, firstname_***,lastname_***,country_***,note_***)
set @i=@i+1
endset identity_insert testtable off
分頁方案一:(利用not in和select top分頁)
select top 頁大小 *
from testtable
where (id not in
(select top 頁大小*頁數 id
from 表
order by id))
order by id
分頁方案二:(利用id大於多少和select top分頁)
select top 頁大小 *
from testtable
where (id >
(select max(id)
from (select top 頁大小*頁數 id
from 表
order by id) as t))
order by id
其它的方案:如果沒有主鍵,可以用臨時表,也可以用方案三做,但是效率會低。
建議優化的時候,加上主鍵和索引,查詢效率會提高。
通過sql 查詢分析器,顯示比較:我的結論是:
分頁方案二:(利用id大於多少和select top分頁)效率最高,需要拼接sql語句
分頁方案一:(利用not in和select top分頁) 效率次之,需要拼接sql語句
高效率秘籍
高效率秘籍1 能量管理 假如今天透支身體數小時,下週你可能要為此償還更多的時間。良好的能量管理有兩步 1 增加你的能量儲備。2 將你的日程表由線性的改為迴圈式的。能量儲備 1 每週有3 5次運動嗎?如果你的回答為否,你正在削弱你的潛在能量水平,除非你的醫生不讓你參加運動,否則最少每天要抽出40分鐘來...
高效率生活
如何高效率生活 我們經常會想,為什麼我天天很努力的工作可是工作還是幹不完,如何才能高效率的工作和學習呢?我想這裡有過一些想法和經驗 經驗2 完成乙個事情再休息。因為人腦和電腦很像,乙個東西只有有了結果之後,再次回想時候才能有用,每個東西都要歸根到乙個節點上,乙個完結的點之後才能由這個點拓展開來,就和...
高效率java程式設計
1 考慮使用靜態工廠方法代替構構方法來例項化類。2 使用私用構構函式,使類具有不可例項化的能力。3 避免建立重複的物件 4 消除過期的物件的使用 5 避免使用終結函式 6 使類和成員的可訪問性最小 7 介面優先於抽象 8 為所有的引數進行有效性檢查 9 謹慎使用過載 10 使用0長度的陣列,而不是空...