|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
DBaaS和其他云服务之间的区别是:DBaaS专注于提供类似关系数据库管理系统RDBMS(比如SQLServer、MySQL和Oracle)的数据库功能。事实上,RDBMS已被证明是一种适合于在各种情况下管理结构化数据的有效工具。纪录集问:我的一个表中包括了名为IdValue的单列主键。关于给定的IdValue值,我但愿找到紧邻方针值之前和以后的表行(假定了局按IdValue排序)。如何才干不利用游标而经由过程一个基于汇合的办法失掉必要的了局?
答:Transact-SQL是一个基于汇合的言语,利用它在了局会合定位特定的行并不是一件易事。可是,服务器端ANSITransact-SQL游标的功能远远不如基于汇合的办理计划,因而,进修办理成绩的多种手艺十分主要,特别在面对上述成绩时。
以Northwind数据库中的Orders表为例。我们能够如许重述该成绩:如何才干在Orders表中找到紧邻特定行之前和以后的行而不利用游标?假定我们依照OrderId列对了局集排序。
制造性地利用SQLServer的MIN()、MAX()和TOP功效能够匡助您办理诸云云类的了局集定位成绩。程序清单1和2给出了两个类似的、唯一渺小不同的办理办法。程序清单1供应了一个罕见的办理计划,由于它使用了@TargetOrder的MIN()和MAX()尽头。但在某些情形下,展现TOP的天真性也很有效。请注重,在以参数体例供应Orders表的最小OrderId(10248)时,程序清单2中的查询将前往空集,由于该查询假定在@TargetOrder行前总有一个行存在。
一样平常说来,天生了局集的办法不止一种,个中某一办法一般比其他的更高效。当您对这两个例子评价SHOWPLAN和SETSTATISTICSIO信息时,您会发明使用了TOP语句的程序清单2的效力稍微高于程序清单1。不同很渺小的缘故原由在于样本数据集很小,但在存在多种查询办法的情形下,测试分歧办法的功能十分主要。
―BrianMoran
程序清单1:利用包括OR关头字的MIN()andMAX()函数查找方针行
DECLARE@TargetOrderint
SET@TargetOrder=10330
FROMOrders
WHEREOrderId=@TargetOrder
OROrderId=(SELECTMAX(OrderId)
FROMordersWHEREOrderId<@TargetOrder)
OROrderId=(SELECTMIN(OrderId)
FROMordersWHEREOrderId>@TargetOrder)
程序清单2:利用TOP关头字查找方针行
SELECT
TOP3
*
FROMorders
WHEREOrderId>=(SELECTMAX(OrderId)FROMorders
WHEREOrderId<@TargetOrder)
ORDERBY
OrderId
对于IT经理来说,令他们喜欢的MySQL的简单性还有另一方面。MySQL可以运行的更快速。某些人或许会说MySQL缺少了一些人们想要的功能。 |
|