程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 五種提高 SQL 性能的方法

五種提高 SQL 性能的方法

編輯:關於SqlServer

有時, 為了讓應用程序運行得更快,所做的全部工作就是在這裡或那裡做一些很小調整。啊,但關鍵在於確定如何進行調整!遲早您會遇到這種情況:應用程序中的 SQL 查詢不能按照您想要的方式進行響應。它要麼不返回數據,要麼耗費的時間長得出奇。如果它降低了報告或您的企業應用程序的速度,用戶必須等待的時間過長,他們就會很不滿意。就像您的父母不想聽您解釋為什麼在深更半夜才回來一樣,用戶也不會聽你解釋為什麼查詢耗費這麼長時間。(“對不起,媽媽,我使用了太多的 LEFT JOIN。”)用戶希望應用程序響應迅速,他們的報告能夠在瞬間之內返回分析數據。就我自己而言,如果在 Web 上沖浪時某個頁面要耗費十多秒才能加載(好吧,五秒更實際一些),我也會很不耐煩。

為了解決這些問題,重要的是找到問題的根源。那麼,從哪裡開始呢?根本原因通常在於數據庫設計和訪問它的查詢。在本月的專欄中,我將講述四項技術,這些技術可用於提高基於 SQL Server? 的應用程序的性能或改善其可伸縮性。我將仔細說明 LEFT JOIN、CROSS JOIN 的使用以及 IDENTITY 值的檢索。請記住,根本沒有神奇的解決方案。調整您的數據庫及其查詢需要占用時間、進行分析,還需要大量的測試。這些技術都已被證明行之有效,但對您的應用程序而言,可能其中一些技術比另一些技術更適用。



從 INSERT 返回 IDENTITY
我決定從遇到許多問題的內容入手:如何在執行 SQL INSERT 後檢索 IDENTITY 值。通常,問題不在於如何編寫檢索值的查詢,而在於在哪裡以及何時進行檢索。在 SQL Server 中,下面的語句可用於檢索由最新在活動數據庫連接上運行的 SQL 語句所創建的 IDENTITY 值:

CODE: SELECT @@IDENTITY [Copy to clipboard]
這個 SQL 語句並不復雜,但需要記住的一點是:如果這個最新的 SQL 語句不是 INSERT,或者您針對非 INSERT SQL 的其他連接運行了此 SQL,則不會獲得期望的值。您必須運行下列代碼才能檢索緊跟在 INSERT SQL 之後且位於同一連接上的 IDENTITY,如下所示:

CODE: INSERT INTO Products (ProductName) VALUES ('Chalk')

SELECT @@IDENTITY [Copy to clipboard]
在一個連接上針對 Northwind 數據庫運行這些查詢將返回一個名稱為 Chalk 的新產品的 IDENTITY 值。所以,在使用 ADO 的 Visual Basic? 應用程序中,可以運行以下語句:

CODE: Set oRs = oCn.Execute("SET NOCOUNT ON;INSERT INTO Products _
(ProductName) VALUES ('Chalk');SELECT @@IDENTITY")

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved