仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1683|回复: 9
打印 上一主题 下一主题

[学习教程] MYSQL网页编程之一种基于纪录集查找特定行的办法

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:36:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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缺少了一些人们想要的功能。
兰色精灵 该用户已被删除
沙发
发表于 2015-1-17 17:55:40 | 只看该作者
我个人认为就是孜孜不懈的学习
板凳
发表于 2015-1-21 06:24:21 | 只看该作者
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。
admin 该用户已被删除
地板
发表于 2015-1-30 09:38:44 | 只看该作者
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
海妖 该用户已被删除
5#
发表于 2015-2-6 09:44:26 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
再现理想 该用户已被删除
6#
发表于 2015-2-15 22:10:34 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
精灵巫婆 该用户已被删除
7#
发表于 2015-3-4 15:39:07 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
金色的骷髅 该用户已被删除
8#
发表于 2015-3-11 20:12:44 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
飘灵儿 该用户已被删除
9#
发表于 2015-3-19 11:20:25 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
灵魂腐蚀 该用户已被删除
10#
发表于 2015-3-27 22:18:55 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-26 03:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表