建站技术网专注分享网站建设技术,网站建设教程,真正帮你学会做网站技术,轻松解决网站建设过程中遇到的常见问题,为广大站长服务。 收藏本站 | 订阅
域名投资,就来找米网,认准网址:www.zhaomi.cc 专业仿站,就到仿站网:www.fangzhan.org
  站内公告: ·帝国cms教程内容已更新,欢迎关注     ·建站技术网采用阿里云服务器,备案已通    
您当前的位置:首页 > 数据库教程 > Access教程

高效率的Access\MSSQL分页的SQL语句

时间:2018-02-02 15:51:27  来源:网络收集  整理: 建站技术网 www.jzjsw.com     点击:11次

采用Access数据库有许多优点,比如数据库无须专门的数据库空间,使用,备份,迁移也非常方便。

但一旦数据量到达上万条,上十万条甚至更多的时候,ACCESS的大数据量的列表分页效率问题就出现了。

用普通的Recordset方法来分页会非常非常慢。

所以从SQL语句底层,找到高效率的分页方法才能优化效率,提高速度。

本文不再讨论用Adodb.Recordset,和SQL语句里的NOT IN或者MAX等方法。

因为这几种方法已经被证明无法承担起大数据量的分页任务。

给大家推荐的是双TOP法高效率的Access分页的SQL语句。

先直接给SQL语句,然后再分析


[sql] view plain copy

SELECT * FROM   

   

(SELECT TOP "&pagesize&" * FROM   

   

(SELECT TOP "&page*pagesize&" 字段 FROM 表 ORDER BY id DESC)   

   

ORDER BY id)   

   

ORDER BY id DESC  


mssql实现分页的存储过程

建立表:

[sql] view plain copy

 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]  

GO  

  

插入数据:(2万条,用更多的数据测试会明显一些)  

SET 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_XXX,LastName_XXX,Country_XXX,Note_XXX)  

set @i=@i+1  

end  

  

SET IDENTITY_INSERT TestTable OFF   


分页方案一:(利用Not In和SELECT TOP分页)

[sql] view plain copy

SELECT TOP 页大小 *  

FROM TestTable  

WHERE (ID NOT IN  

(SELECT TOP 页大小*页数 id  

FROM 表  

ORDER BY id))  

ORDER BY ID   


分页方案二:(利用ID大于多少和SELECT TOP分页)

[sql] view plain copy

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语句


文章标题:高效率的Access\MSSQL分页的SQL语句
文章网址:http://www.jzjsw.com/shujuku/Access/3808.html
上一篇:Access仿Excel的RoundUp函数向上取整的方法
下一篇:ACCESS数据库分页的SQL语句
来顶一下
返回首页
返回首页
相关文章
    无相关信息
推荐资讯
如何通过SEO优化排名赚钱?SEO赚钱方法
如何通过SEO优化排名赚
seo优化教程:网站seo内容优化
seo优化教程:网站seo
SEO细节:企业SEO如何快速为新站做出效果
SEO细节:企业SEO如何
电商技术将如何发展?2018年有这五个大胆预测
电商技术将如何发展?
最新文章
栏目更新
栏目热门