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

【改斜归正】 sqlserver sql 分页语句

      在Google上使用“sql 分页”关键字进行搜索,几乎所有的答案都是那三条。其二效率最高,其三使用游标,效率最差。
      下面是那三种方法 (插入代码没有sql选项)
方法1:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
from table1
WHERE id NOT IN
(
SELECT TOP 页大小*(页数-1) id from table1 ORDER BY id
)
ORDER BY id
方法2:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
from table1
WHERE id >
(
SELECT ISNULL(MAX(id),0)
from
(
SELECT TOP 页大小*(页数-1) id from table1 ORDER BY id
) A
)
ORDER BY id
方法3:
适用于 SQL Server 2005
SELECT TOP 页大小 *
from
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* from table1
) A
WHERE RowNumber > 页大小*(页数-1)
      粗略看了,这三种方法都没用错。说的都有理。相对来说前两种方法对于带条件的查询不够方便。
      至于效率,今天实际加了条件测试一下。实际速度并不是方案2最快,方案3最慢。实际情况是方案3最快,方案1次之,方案2最慢。与网上结果截然相反。但是方案3有一个非常要紧的错误:没有排序。直接使用可能会导致错误。
      不加条件的测试结果是一样的。
      方案3的正确用法是:
SELECT TOP 10 * from tt
SELECT TOP 页大小 *
from
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* from table1
) A
WHERE RowNumber > 页大小*(页数-1) ORDER BY RowNumber
以下是测试方案。
创建下表:
USE [BigDb]
GO
/****** Object: Table [dbo].[t7] Script Date: 02/20/2010 20:35:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[t7](
[id] [int] IDENTITY(1,1) NOT NULL,
[pid] [int] NOT NULL,
[sex] [bit] NOT NULL,
[name] [nchar](5) COLLATE Chinese_PRC_CI_AS NOT NULL,
[age] [int] NOT NULL,
[time] [datetime] NOT NULL,
[note] [ntext] CO


相关文档:

sql group by


sql group by 用法
2009-07-16 11:01:00    业界 |  评论(0) |  浏览(1676)
group by主要是用来分组的,怎么个分组呢?
以下用两个例子说明两个使用方面,1是合理的返回合计值(防止笛卡尔积现象),2是用分组来找出重复的记录
============================================================== ......

总结一点Access与Sqlserver的sql的差异

最近整理出来的.如果不完全的话希望大家补充.
在access中,转换为大写的sql函数是ucase,在sqlserver中,转换为大写的函数是upper;在access中,转换为小写的函数是lcase,在sqlserver中,转换为小写的函数是lower;在access中,取当前时间的函数是now,另外还有一个取日期函数date,在sqlserver中,取当前的函数是getdate ......

SQL身份证格式验证


SQL版本身份证格式验证 0为错误,1为正确
CREATE  function [dbo].[IsID](@str nvarchar(18),@sex int)--传入两个变量 身份证和性别(男1女2)
returns bit
as
begin
declare @len int
declare @result bit
--set @result=0
set @len=len(@str)
if(@len!=18 and @len!=15)--长度是18位或15位
 begin
& ......

Oracle DBA日常sql列表及常用视图

不错的资料,转过来,方便日后查看使用!!!
--监控索引是否使用
alter index &index_name monitoring usage;
alter index &index_name nomonitoring usage;
select * from v$object_usage where index_name =
&index_name;
--求数据文件的I/O分布
select
df.name,phyrds,phywrts,phyblkrd,phyblkwrt,sin ......

LINQ to SQL 查询数据库和使用存储过程


如下列出查询表达式,常用操作符,与SQL语句对应。

where  关键字的使用
public void MyWhere()
{
NorthwindDataContext dc = new NorthwindDataContext();
//查询产品名称以L开头的记录
var query = from p in dc.Products
where p.Prod ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号