易截截图软件、单文件、免安装、纯绿色、仅160KB

Sql数据层分页技术

看了一篇讲座,说到数据层分页技术,用到了4中方式,1)使用top *top   2)使用表变量  3)使用临时表 4)使用ROW_NUMBER函数。
其中最快的是第1 和第4中方式,接下来我们来看看这两种方式:
我们使用sql2005自带的数据库 AdventureWorks测试,
1)
--Use Top*Top
DECLARE @Start datetime,@end datetime;
SET @Start=getdate();
 
DECLARE @PageNumber INT, @Count INT, @Sql varchar(max);
SET @PageNumber=5000;
SET @Count=10;
SET @Sql='SELECT T2.* from (
    SELECT TOP 10 T1.* from
       (SELECT TOP ' + STR(@PageNumber*@Count) +' * from Production.TransactionHistoryArchive
       ORDER BY ReferenceOrderID ASC) AS T1
    ORDER BY ReferenceOrderID DESC) AS T2
ORDER BY ReferenceOrderID ASC';
EXEC (@sql);
 
SET @end=getdate();
PRINT Datediff(millisecond,@Start,@end);
GO
解析:我们是要查出第5000页,每页10条,也就是第49991~第50000条,
   先select出前50000条,再倒序出后10条,再升序排列,也就是49991~50000条,执行时间为373毫秒。
2)
--Use ROW_NUMBER
DECLARE @Start datetime,@end datetime;
SET @Start=getdate();
 
DECLARE @PageNumber INT, @Count INT, @Sql varchar(max);
SET @PageNumber=5000;
SET @Count=10;
SELECT * from
(   SELECT ROW_NUMBER() 
      OVER(ORDER BY ReferenceOrderID) AS RowNumber,   
      *
    from Production.TransactionHistoryArchive) AS T
WHERE T.RowNumber<=@PageNumber*@Count AND T.RowNumber>(@PageNumber-1)*@Count;
 
SET @end=getdate();
PRINT Datediff(millisecond,@Start,@end);
GO
解析:也是要查出第5000页,每页10条。先将数据全部排名,再where两个条件,一个是排名<=5000*10=50000条 并且排名>4999*10=49990条,也就是49991到50000条。 执行时间为156,这种方式更优。主要是top方式是反复的去查,消耗了时间。


相关文档:

SQL 按周,月,季度,年查询统计数据

//按自然周统计 
select to_char(date,'iw'),sum() 
from 
where 
group by to_char(date,'iw') 
//按自然月统计 
select to_char(date,'mm'),sum() 
from 
where 
group by to_char(date,'mm') 
//按季统计 
select to_char(date,'q'),sum() 
fr ......

PowerDesigner生成SQL ER图 说明文档

一、PowerDesigner生成sql问题
生成sql的方法是 Database -->Generate Database (Ctrl + G ) 但是提示 Could not load VBScript engine.
Check VBScript installation. Generation aborted due to errors detected during the verification of the model. 检查了好久 发现将check model 去掉就可以了!其中, o ......

如何在未加入域的机器上使用集成认证来登陆SQL Server

一般使用SQL Server的集成认证时,都需要登陆进域,下面介绍一种不需要登陆域就可以使用域用户登陆SQL Server的方法。
SQL Server Management Studio 2005和2008的快捷方式如下图:
  
SQL Server 2008 x64: "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe"
SQL ......

SQL Server索引管理之六大铁律


原文转自:http://tech.it168.com/a2009/0218/265/000000265868.shtml
索引是以表列为基础的数据库对象。索引中保存着表中排序的索引列,并且纪录了索引列在数据库表中的物理存储位置,实现了表中数据的逻辑排序。通过索引,可以加快数据的查询速度和减少系统的响应时间;可以使表和表之间的连接速度加快。
  但是, ......

SQL Server 行列转换

在SQL SERVER中,有时需要合多列值到行的需求,常见的方法有:1.创建自定义函数,2.使用游标法进行字符串合并。3.使用临时表实现字符串合并。 数据: DEPTNO EMPS
------ ----------
10 CLARK
10 KING
10 MILLER
20 SMITH
20 ADAMS
20 FORD
20 SCOTT
20 JONES
30 ALLEN
30 BLAKE
30 MARTIN
30 JAMES
30 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号