易截截图软件、单文件、免安装、纯绿色、仅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 Server分页3种方案比拼

建立表:
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] [ ......

sql 汉字转首字母拼音

create function fun_getPY(@str nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@str)>0
begin
set @word=left(@str,1)
--如果非汉字字符,返回原字符
set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901 ......

SQL语句优化的原则

Mysql的优化原则1:
1、使用索引来更快地遍历表。
缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引
下,数据在物理上随机存放在数据页上。合理的索引设计要建立在
对各种查询的分析和预测上。一般来说:
a.有大量重复值、且经常有范围查询( > ,< ,> =,< =)和order by、group by ......

SQL查询效率 100w数据查询只要1秒

机器情况
p4: 2.4
内存: 1 G
os: windows 2003
数据库: ms sql server 2000
目的: 查询性能测试,比较两种查询的性能
SQL查询效率 step by step
-- setp 1.
-- 建表
create table t_userinfo
(
userid int identity(1,1) primary key nonclustered,
nick&nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号