共用方式為


通知計畫

若要有效使用查詢通知,您應考量查詢通知對您的應用程式是否有利、您的應用程式所使用的查詢是否支援通知,以及應用程式將使用何種策略來訂閱及接收通知。

若查詢中的資料變動頻率較低、應用程式在資料變更時不需立即更新,以及查詢符合<為通知建立查詢>所列之需求與限制時,查詢通知都可提供便捷的方式來降低往返於資料庫的次數。許多 Web 應用程式都符合這些條件,而這些應用程式即可充分利用查詢通知。

查詢通知並非在所有狀況下都有效用。若應用程式經常從資料庫讀取資料,但資料更新的頻率相對而言較低的話,查詢通知即可派上用場。例如,檢視線上目錄應用程式的頻率會比目錄更新的頻率來得高。但就線上購物車而言,某些特定的內容可能會很頻繁地更新,此時查詢通知就沒有太大的效用。

當應用程式所發出的查詢共用相同的結構,而且僅在參數值中有變化時,查詢通知就會很有效率。例如:

SELECT ProductNumber, Name FROM Production.Product WHERE ListPrice < 300
SELECT ProductNumber, Name FROM Production.Product WHERE ListPrice < 500

在此情況中,兩個通知的查詢通知訂閱共用相同的內部範本,因此在 SQL Server 中所造成的負擔會低於各自使用不同查詢結構的兩個通知。但請注意,查詢中的參數都會保留下來。即使查詢共用範本,但在加入 ListPrice 為 350 的項目時,將會對第二個查詢產生通知,而不是對第一個查詢。

若資料表上正在使用查詢通知,則在更新資料表時就會耗費更多成本。Database Engine 會執行額外的工作來檢查訂閱,並在必要時產生通知。重複使用內部範本有助於降低每個訂閱的負擔。因此,只有以類似結構提交查詢的應用程式,才應該使用查詢通知。以不同結構提交查詢的應用程式,不應使用查詢通知。

例如,若有某個應用程式可顯示特定價格範圍中的目錄項目,並以相同的結構提交查詢。在此情況下,Database Engine 可以對每個查詢重複使用內部範本,而查詢通知即可增進效能。但允許特定報告的應用程式會以不同的結構提交查詢。在此情況下,該應用程式就不應使用查詢通知。

只要至少有一個註冊的訂閱使用內部範本,Database Engine 就會維護此範本。Database Engine 會限制特定資料表上不同內部範本的數量。一旦達到此限制,Database Engine 就不會對需要建立新範本的訂閱進行註冊。相反的,Database Engine 會立即產生訂閱訊息,指出該訂閱無法進行註冊。

請參閱

概念