SQL Server 2008 TOP 新用途

/***************创建测试表*********************

****************[email protected] ***************/

IF NOT OBJECT_ID(‘[Demo_Top]‘) IS NULL

DROP TABLE [Demo_Top]

GO

Create table [Demo_Top]

(PID int identity(1,1) primary key not null

,PName nvarchar(100) null

,AddTime dateTime null

,PGuid Nvarchar(40)

)

go

truncate table [Demo_Top]

/***************创建1002条测试数据*********************

****************[email protected] ***************/

declare @d datetime

set @d=getdate()

declare @i int

set @i=1

while @i<=1002

begin

insert into [Demo_Top]

select cast(datepart(ms,getdate()) as nvarchar(3))+Replicate(‘A‘,datepart(ss,getdate()))

,getdate()

,NewID()

set @[email protected]+1

End

--注意TOP关键字可以用于Select,Update和Delete语句中

Declare @percentage float

set @percentage=1

select Top (@percentage) percent PName from [Demo_Top] order by PName

--注意是11行。(11 row(s) affected)

如果只是需要一些样本,也可以使用TableSample,以下语句返回表Demo_Top的一定百分比的随机行

select PName,AddTime, PGuid from [Demo_Top]

TableSample System(10 percent)

--(77 row(s) affected)

TOP分块修改数据

TOP的第二个关键改进是支持数据的分块操作。换句话说,避免在一个语句中执行非常大的操作,而把修改分成多个小块,这大大改善了大数据量、大访问量的表的并发性,可以用于大的报表或数据仓库应用程序。此外,分块操作可以避免日志的快速增长,因为前一操作完成后,可能会重用日志空间。如果操作中有事务,已经完成的修改数据已经可以用于查询,而不必等待所有的修改完成。

仍以上表为例:

while (select count(1) from [Demo_Top])>0

begin

delete top (202) from [Demo_Top]

end

/*

(202 row(s) affected)

(202 row(s) affected)

(202 row(s) affected)

(202 row(s) affected)

(194 row(s) affected)

*/

注意是每批删除202条数据,TOP也可以用于Select和Update语句,其中后者更为实用。

--Select TOP(100)

--Update TOP(100)

时间: 2024-10-15 21:35:02

SQL Server 2008 TOP 新用途的相关文章

SQL Server 2008 top percent

之前只是看过关于SQL Server 2008中添加了percent功能,今天终于有机会试了! 今天处理好的数据,上头让修改下,把营销结果为Null的值20%改为"未通过",80%的改为"拒绝".于是乎就想到了percent: 首先使用了下select top 20 percent from xxxtable where 营销结果 is null,成功! 更新啊,update  top 20 percent xxxtable set 营销结果='未通过' where

SQL Server 2008索引使用技巧

微软MVP及畅销书<Hitchhiker's Guide SQL Server>的作者Bill Vaughn简要给出了SQL Server 2008的索引使用技巧.该主题基于Kimberly Tripp和Paul Randall(这两位是SQL Server高可用性和性能方面的专家)的建议. 下面是主要的建议: ·页(page)密度 优化行大小:SQL Server 2005(及后续版本)支持8k的列.这意味着一行可以超过80k大小.这有意义么?哦,通常情况下没有.对行大小的管理与效率同样重要

SQL Server 2008数据类型

在创建表时,必须为表中的每列指派一种数据类型.本节将介绍SQL Server中最常用的一些数据类型.即使创建自定义数据类型,它也必须基于一种标准的SQL Server数据类型.例如,可以使用如下语法创建一种自定义数据类型(Address),但要注意,它基于SQL Server标准的varchar数据类型. CREATE TYPE Address FROM varchar(35) NOT NULL 如果在SQL Server Management Studio的表设计界面中更改一个大型表中某列的数

SQL Server 2008性能故障排查(一)——概论

原文:SQL Server 2008性能故障排查(一)--概论 备注:本人花了大量下班时间翻译,绝无抄袭,允许转载,但请注明出处.由于篇幅长,无法一篇博文全部说完,同时也没那么快全部翻译完,所以按章节发布.由于本人水平有限,翻译结果肯定存在问题,为了不造成误导,在每篇结尾处都附上原文,供大家参考,也希望能指出我的问题,以便改进.谢谢. 另外,本文写给稍微有经验的数据库开发人员或者DBA看,初学者可能会看不懂.在此请见谅 作者:Sunil Agarwal, Boris Baryshnikov, K

SQL SERVER 数据类型详解(SQL Server 2008)

数据类型类别 SQL Server 中的数据类型归纳为下列类别: 数字类型 1.精确数字 2.近似数字 3.日期和时间 字符串类型 4.非Unicode字符串 4.Unicode字符串 5.二进制字符串 6.其他数据类型 7.CLR 在 SQL Server 中,根据其存储特征,某些数据类型被指定为属于下列各组: 大值数据类型:varchar(max).nvarchar(max) 和 varbinary(max) 大型对象数据类型:text.ntext.image.varchar(max).nv

SQL Server 2008中SQL增强之一:Values新用途

SQL Server 2008中新增功能:可以使用单个Insert命令插入多行. Create table Demo_Values (PKID int not null identity(1,1) primary key ,DName Nvarchar(20) null ,DCode NVarchar(30) null ,DDate datetime null ) go--this SQL is only for SQL Server 2008 Insert into Demo_Values (

SQL Server 2008的一些新特点及独到之处

SQL Server 2008的一些新特点及独到之处: 设置和安装 SQL Server 2008的设置和安装也有所改进.配置数据和引擎位已经分开了,所以它使创建基本的未配置系统的磁盘图像变得可能了,它使分布到多个服务器变得更容易了.从微软的站点也可以找到安装可用的最新更新.另一个特点是有能力把安装SQL.SP和补丁做一个单一的步骤进行了.另一个的最后的特点是,有能力卸载SP了. 关键的领域 当回顾微软关于SQL Server 2008的文档时注意到的第一条就是术语分类的特点和用途分组的特点.或

Atitit.数据库新特性战略规划 mssql sql server 2008 SQL2012 SQL2014

Atitit.数据库新特性 mssql sql server 2008 SQL2012 SQL2014 1. Sql2012 新特性 1 1.1. 增加了Sequence对象. 1 1.2. 新的分页查询语法.offset和fetch 1 1.3. OVER子句的增强和新增一些分析函数. 之前OVER子句是用于RANK,ROW_NUMBER等排名函数,现在OVER子句得到了大大的增强, 可以将OVER子句应用到聚合函数中,也增加了一些分析函数. 2 1.4. 增强的审计功能 2 1.5. 增强的

insert into values 插入多条指定记录 - sql server 2008新功能

之前碰到一条如下语句 declare @t1 table (catId int, id int) insert into @t1(catid,id) values (15,33), (15,49), (15,113) sql server 2000及2005上跑,均报错--Line 3: Incorrect syntax near ','. 后来查了一下,这是sql server2008出来的新特性.所以此语句仅限于sql server 2008及以上版本使用. PS:顺道提一下,sql ser