高效率的Access MSSQL分頁的SQL語句

2021-06-18 22:40:42 字數 2048 閱讀 3375

採用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長度的陣列,而不是空...