没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
四项技术 助你提高 SQL Server 的性能
本文来自: 编程入门网 http://www.bianceng.cn/data/SQLServer/zl/200805/9951_2.htm
本文讲解如何使用 LEFT JOIN、CROSS JOIN 以及 IDENTITY 值的检索,这些技术来提高
基于 SQL Server 的应用程序的性能或改善其可伸缩性。
我将讲述四项技术,这些技术可用于提高基于 SQL Server 的应用程序的性能或改善其
可伸缩性。我将仔细说明 LEFT JOIN、CROSS JOIN 的使用以及 IDENTITY 值的检索。请
记住,根本没有神奇的解决方案。调整您的数据库及其查询需要占用时间、进行分析,还
需要大量的测试。这些技术都已被证明行之有效,但对您的应用程序而言,可能其中一些
技术比另一些技术更适用。
一. 从 INSERT 返回 IDENTITY
我决定从遇到许多问题的内容入手:如何在执行 SQL INSERT 后检索 IDENTITY 值。
通常,问题不在于如何编写检索值的查询,而在于在哪里以及何时进行检索。在 SQL
Server 中,下面的语句可用于检索由最新在活动数据库连接上运行的 SQL 语句所创建的
IDENTITY 值:
SELECT @@IDENTITY
这个 SQL 语句并不复杂,但需要记住的一点是:如果这个最新的 SQL 语句不是
INSERT,或者您针对非 INSERT SQL 的其他连接运行了此 SQL,则不会获得期望的值。
您 必 须 运 行 下 列 代 码 才 能 检 索 紧 跟 在 INSERT SQL 之 后 且 位 于 同 一 连 接 上 的
IDENTITY,如下所示:
INSERT INTO Products (ProductName) VALUES ('Chalk')
SELECT @@IDENTITY
在一个连接上针对 Northwind 数据库运行这些查询将返回一个名称为 Chalk 的新产品
的 IDENTITY 值。所以,在使用 ADOVisual Basic 应用程序中,可以运行以下语句:
Set oRs = oCn.Execute("SET NOCOUNT ON;INSERT INTO Products _
(ProductName) VALUES ('Chalk');SELECT @@IDENTITY")
lProductID = oRs(0)
此代码告诉 SQL Server 不要返回查询的行计数,然后执行 INSERT 语句,并返回刚刚
为这个新行创建的 IDENTITY 值。SET NOCOUNT ON 语句表示返回的记录集有一行和一
列,其中包含了这个新的 IDENTITY 值。如果没有此语句,则会首先返回一个空的记录集
(因为 INSERT 语句不返回任何数据),然后会返回第二个记录集,第二个记录集中包含
IDENTITY 值。这可能有些令人困惑,尤其是因为您从来就没有希望过 INSERT 会返回记
录集。之所以会发生此情况,是因为 SQL Server 看到了这个行计数(即一行受到影响)并
将其解释为表示一个记录集。因此,真正的数据被推回到了第二个记录集。当然您可以使
linlongan
- 粉丝: 1
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0