改善基于SQL Server数据库程序的可伸缩性的方案

数据库 SQL Server
以下的文章主要描述的是正确改善基于SQL Server数据库的实际应用程序的可伸缩性之从 INSERT 返回 IDENTITY的实际操作步骤。

以下的文章主要向大家讲述的是正确改善基于SQL Server数据库的实际应用程序的可伸缩性之从 INSERT 返回 IDENTITY的内容介绍,在实际操作中有时,为了让应用程序运行得更快,所做的全部工作就是在这里或那里做一些很小调整。

但关键在于确定如何进行调整!迟早您会遇到这种情况:应用程序中的 SQL 查询不能按照您想要的方式进行响应。它要么不返回数据,要么耗费的时间长得出奇。如果它降低了企业应用程序的速度,用户必须等待很长时间。用户希望应用程序响应迅速,他们的报告能够在瞬间之内返回分析数据。就我自己而言,如果在Web上冲浪时某个页面要耗费十多秒才能加载,我也会很不耐烦。

 

为了解决这些问题,重要的是找到问题的根源。那么,从哪里开始呢?根本原因通常在于数据库设计和访问它的查询。我将讲述几项技术,这些技术可用于提高基于SQL Server的应用程序的性能或改善其可伸缩性。

我将仔细说明 LEFT JOIN、CROSS JOIN 的使用以及IDENTITY 值的检索。请记住,根本没有神奇的解决方案。调整您的数据库及其查询需要占用时间、进行分析,还需要大量的测试。这些技术都已被证明行之有效,但对您的应用程序而言,可能其中一些技术比另一些技术更适用。

 

 

从 INSERT 返回 IDENTITY

 

 

我决定从遇到许多问题的内容入手:如何在执行SQL INSERT后检索IDENTITY值。通常,问题不在于如何编写检索值的查询,而在于在哪里以及何时进行检索。在SQL Server数据库中,下面的语句可用于检索由***在活动数据库连接上运行的 SQL 语句所创建的 IDENTITY 值:

 

 

 

  1. SELECT @@IDENTITY 

 

 

这个 SQL 语句并不复杂,但需要记住的一点是:如果这个***的 SQL 语句不是 INSERT,或者您针对非 INSERT SQL 的其他连接运行了此 SQL,则不会获得期望的值。您必须运行下列代码才能检索紧跟在 INSERT SQL 之后且位于同一连接上的 IDENTITY,如下所示:

 

 

 

  1. INSERT INTO Products (ProductName) VALUES ('Chalk')  
  2. SELECT @@IDENTITY 

 

 

 

在一个连接上针对 Northwind 数据库运行这些查询将返回一个名称为 Chalk 的新产品的 IDENTITY 值。所以,在使用ADOVisual Basic应用程序中,可以运行以下语句:

 

Set oRs = oCn.Execute("SET NOCOUNT>此代码告诉 SQL Server 不要返回查询的行计数,然后执行 INSERT 语句,并返回刚刚为这个新行创建的 IDENTITY 值。SET NOCOUNT>

此方法虽然有效,但需要在 SQL 语句中额外添加一些代码。获得相同结果的另一方法是在 INSERT 之前使用 SET NOCOUNT> CREATE TRIGGER trProducts_Insert>触发器只在 Products 表上发生 INSERT 时启动,所以它总是会在成功 INSERT 之后返回一个 IDENTITY。使用此技术,您可以始终以相同的方式在应用程序中检索 IDENTITY 值。

以上的相关内容就是对改善基于SQL Server数据库的应用程序可伸缩性之从 INSERT 返回 IDENTITY的介绍,望你能有所收获。 

【编辑推荐】

  1. SQL Server 2000的分页存储过程的改写
  2. SQL Server业务规则的链接技术之探讨
  3. SQL Server子查询的作用是什么?
  4. 正确识别SQL Server 版本号的操作方案
  5. SQL Server分布式分区视图简介

 

责任编辑:佚名 来源: 互联网
相关推荐

2009-09-16 10:00:14

可伸缩性Web服务

2009-08-20 10:30:55

可伸缩性系统

2009-11-11 16:07:09

OSPF路由协议

2016-11-03 13:11:21

phpphp框架

2017-09-07 16:50:47

MySQL性能优化

2015-09-17 09:30:50

云架构可伸缩性风险

2013-10-16 10:45:29

JVMJava

2009-04-16 17:30:00

可伸缩管理集成

2011-03-16 13:57:21

SQL Server数据库查询

2010-07-21 16:20:45

SQL Server

2010-06-30 16:48:19

SQL Server数

2010-07-07 10:31:43

SQL Server数

2010-07-08 11:05:14

SQL Server数

2010-07-14 14:36:24

SQL Server附

2010-06-30 15:52:05

2010-05-18 17:18:32

IIS服务器

2010-07-15 17:28:50

SQL Server

2011-03-24 09:07:11

SQL Server数备份

2011-03-24 09:45:34

SQL Server数恢复

2011-03-24 09:24:08

SQL Server数还原
点赞
收藏

51CTO技术栈公众号