成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server性能進行提高的4項技術概述

數據庫 SQL Server
我們今天主要向大家分享的是正確利用以下的4項技術來對SQL Server性能進行提高的實際操作步驟,以下就是文章的主要內容描述。

此文章主要向大家講述的是如何正確利用以下的4項技術來對SQL Server性能進行提高,主要是包括LEFT JOIN、CROSS 、JOIN以及IDENTITY值的檢索,這些技術來提高基于SQL Server性能或改善其可伸縮性。

 

有時,為了讓應用程序運行得更快,所做的全部工作就是在這里或那里做一些很小調整。但

 

本文講解如何使用LEFT JOIN、CROSS JOIN以及IDENTITY值的檢索,這些技術來提高基于SQL Server的應用程序的性能或改善其可伸縮性。

 

有時,為了讓應用程序運行得更快,所做的全部工作就是在這里或那里做一些很小調整。但關鍵在于確定如何進行調整!遲早您會遇到這種情況:應用程序中的SQL 查詢不能按照您想要的方式進行響應。它要么不返回數據,要么耗費的時間長得出奇。

如果它降低了企業應用程序的速度,用戶必須等待很長時間。用戶希望應用程序響應迅速,他們的報告能夠在瞬間之內返回分析數據。就我自己而言,如果在Web上沖浪時某個頁面要耗費十多秒才能加載,我也會很不耐煩。

 

為了解決這些問題,重要的是找到問題的根源。那么,從哪里開始呢?根本原因通常在于數據庫設計和訪問它的查詢。我將講述四項技術,這些技術可用于提高基于SQL Server的應用程序的SQL Server性能或改善其可伸縮性。

我將仔細說明 LEFT JOIN、CROSS JOIN 的使用以及IDENTITY 值的檢索。請記住,根本沒有神奇的解決方案。調整您的數據庫及其查詢需要占用時間、進行分析,還需要大量的測試。這些技術都已被證明行之有效,但對您的應用程序而言,可能其中一些技術比另一些技術更適用。

 

  1. 從 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應用程序中,可以運行以下語句:

 

  1. Set oRs = oCn.Execute("SET NOCOUNT ON;INSERT INTO Products _  
  2. (ProductName) VALUES ('Chalk');SELECT @@IDENTITY")  
  3. lProductID = oRs(0) 

 

 

此代碼告訴 SQL Server性能不要返回查詢的行計數,然后執行 INSERT 語句,并返回剛剛為這個新行創建的 IDENTITY 值。SET NOCOUNT ON 語句表示返回的記錄集有一行和一列,其中包含了這個新的 IDENTITY 值。

如果沒有此語句,則會首先返回一個空的記錄集(因為 INSERT 語句不返回任何數據),然后會返回第二個記錄集,第二個記錄集中包含 IDENTITY 值。這可能有些令人困惑,尤其是因為您從來就沒有希望過 INSERT 會返回記錄集。之所以會發生此情況,是因為 SQL Server 看到了這個行計數(即一行受到影響)并將其解釋為表示一個記錄集。

因此,真正的數據被推回到了第二個記錄集。當然您可以使用 ADO 中的 NextRecordset 方法獲取此第二個記錄集,但如果總能夠首先返回該記錄集且只返回該記錄集,則會更方便,也更有效率。

此方法雖然有效,但需要在 SQL 語句中額外添加一些代碼。獲得相同結果的另一方法是在 INSERT 之前使用 SET NOCOUNT ON 語句,并將 SELECT @@IDENTITY 語句放在表中的 FOR INSERT 觸發器中,如下面的代碼片段所示。這樣,任何進入該表的 INSERT 語句都將自動返回 IDENTITY 值。

 

  1. CREATE TRIGGER trProducts_Insert ON Products FOR INSERT AS  
  2. SELECT @@IDENTITY  
  3. GO 

 

 

觸發器只在 Products 表上發生 INSERT 時啟動,所以它總是會在成功 INSERT 之后返回一個 IDENTITY。使用此技術,您可以始終以相同的方式在應用程序中檢索 IDENTITY 值。

 

內嵌視圖與臨時表

某些時候,查詢需要將數據與其他一些可能只能通過執行 GROUP BY 然后執行標準查詢才能收集的數據進行聯接。例如,如果要查詢最新五個定單的有關信息,您首先需要知道是哪些定單。這可以使用返回定單 ID 的 SQL 查詢來檢索。此數據就會存儲在臨時表(這是一個常用技術)中,然后與 Products 表進行聯接,以返回這些定單售出的產品數量:

 

  1. CREATE TABLE #Temp1 (OrderID INT NOT NULL, _  
  2. OrderDate DATETIME NOT NULL)  
  3. INSERT INTO #Temp1 (OrderID, OrderDate)  
  4. SELECT TOP 5 o.OrderID, o.OrderDate  
  5. FROM Orders o ORDER BY o.OrderDate DESC  
  6. SELECT p.ProductName, SUM(od.Quantity) AS ProductQuantity  
  7. FROM #Temp1 t  
  8. INNER JOIN [Order Details] od ON t.OrderID = od.OrderID  
  9. INNER JOIN Products p ON od.ProductID = p.ProductID  
  10. GROUP BY p.ProductName  
  11. ORDER BY p.ProductName  
  12. DROP TABLE #Temp1 

 

 

 

以上的相關內容就是對四項技術提高SQL Server性能的介紹,望你能有所收獲。

 

責任編輯:佚名 來源: 51CTO網絡整理
相關推薦

2011-04-01 15:36:24

索引SQL Server

2010-08-20 11:07:07

設置 DB2

2013-08-03 17:59:37

Nginx

2010-07-16 13:48:08

SQL Server合

2011-04-02 13:37:05

SQL Server 索引視圖

2010-08-12 18:00:56

DB2數據庫

2010-07-26 09:34:24

SQL Server性

2010-07-16 11:30:06

SQL Server

2009-04-16 17:44:46

性能優化擴展高性能

2015-11-24 10:31:58

谷歌云計算網絡性能

2009-04-16 17:24:54

性能優化SQL Server 數據收集

2010-06-17 10:43:21

SQL Server

2009-09-15 13:53:53

Linq To Sql

2010-10-21 10:42:30

SQL Server查

2022-06-29 08:00:00

SQL分層表數據

2010-07-26 11:27:43

SQL Server打

2010-07-06 11:36:16

SQL Server集

2010-07-07 10:47:58

SQL Server索

2010-07-19 14:31:14

SQL Server

2011-03-17 17:50:39

SQL Server數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩免费在线观看视频 | 午夜精品一区二区三区在线观看 | 欧美男人天堂 | 久久久国产精品 | 黄色成人国产 | 久久精品女人天堂av | 韩国成人在线视频 | 国产精品视频免费看 | 精品国产31久久久久久 | 精品国产乱码久久久久久果冻传媒 | 午夜久久| 在线高清免费观看视频 | 国产精品成人一区二区三区夜夜夜 | 北条麻妃国产九九九精品小说 | 国产精品视频综合 | 久久久久综合 | 国产精品视频专区 | 9999视频| 国产精品美女久久久久aⅴ国产馆 | 成人毛片视频免费 | 午夜视频一区二区 | 成年人精品视频在线观看 | 国产色99精品9i | av黄色片| 狠狠入ady亚洲精品经典电影 | 欧美精品在线视频 | 国产精品亚洲精品 | 国产日韩欧美在线观看 | 精品美女视频在线观看免费软件 | 日屁网站| 天天操 夜夜操 | 91中文在线观看 | 99这里只有精品 | 日本精品视频 | 深夜福利影院 | 九九热这里只有精品在线观看 | 国产98色在线 | 日韩 | 国产成人免费视频网站高清观看视频 | 亚洲区一区二区 | 久久国产高清 | 欧美伦理一区 |