提高SQL Server性能的五种方法
2008-09-02 09:59:02 来源:WEB开发网有时,为了让应用程序运行得更快,所做的全部工作就是在这里或那里做一些很小调整。但关键在于确定如何进行调整!迟早您会遇到这种情况:应用程序中的SQL查询不能按照您想要的方式进行响应。它要么不返回数据,要么耗费的时间长得出奇。如果它降低了企业应用程序的速度,用户必须等待很长时间。用户希望应用程序响应迅速,他们的报告能够在瞬间之内返回分析数据。就我自己而言,如果在Web上冲浪时某个页面要耗费十多秒才能加载,我也会很不耐烦。
为了解决这些问题,重要的是找到问题的根源。那么,从哪里开始呢?根本原因通常在于数据库设计和访问它的查询。我将讲述五项技术,这些技术可用于提高基于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 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接