高效率的Access\MSSQL分页的SQL语句
2013-10-31 11:49
267 查看
采用Access数据库有许多优点,比如数据库无须专门的数据库空间,使用,备份,迁移也非常方便。
但一旦数据量到达上万条,上十万条甚至更多的时候,ACCESS的大数据量的列表分页效率问题就出现了。
用普通的Recordset方法来分页会非常非常慢。
所以从SQL语句底层,找到高效率的分页方法才能优化效率,提高速度。
本文不再讨论用Adodb.Recordset,和SQL语句里的NOT IN或者MAX等方法。
因为这几种方法已经被证明无法承担起大数据量的分页任务。
给大家推荐的是双TOP法高效率的Access分页的SQL语句。
先直接给SQL语句,然后再分析
mssql实现分页的存储过程
建立表:
分页方案一:(利用Not In和SELECT TOP分页)
分页方案二:(利用ID大于多少和SELECT TOP分页)
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。
通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
但一旦数据量到达上万条,上十万条甚至更多的时候,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] 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分页)
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语句
相关文章推荐
- Oracle 高效率 SQL语句
- 高效率Oracle SQL语句
- 高效率SQL语句
- 引用:三种高效率SQL语句分页方法
- 三种高效率SQL语句分页方法
- Web开发中一种用sql语句完成分页的高效率方法(1)
- SQl多表查询优化 高效率SQL语句
- 【转自csdn】Web开发中一种用sql语句完成分页的高效率方法,以jsp/asp为例
- 高效率Oracle SQL语句
- 三种高效率SQL语句分页方法(2)--转自CSDN中WUCF2004的博客
- 如何写出高效率的sql语句
- 高效率Oracle SQL语句
- Web开发中一种用sql语句完成分页的高效率方法,以jsp/asp为例
- SQL语句优化,高效率SQL
- 高效率SQL语句分页方法
- SQL高效率语句(一)
- SQL 高效率分页语句
- 如何编写高效率的SQL查询语句
- 高效率Oracle SQL语句
- 教你如何写高效率的SQL语句