Distributed query vs OPENQUERY
Distributed query (Four-part name) and OPENQUERY
OpenQuery | Distributed Query | |
速度 | 一般來說 OPENQUERY較快一點 | 也很快 |
Query optimizer | 遠端產生執行計畫 | 本地產生執行計畫 產生local query與remote query |
連線數量 | 只會產生1條連線到遠端取回資料 | 會產生2條連線第1條連線先取回統計資訊第2條連線再取回資料 |
優點 | 可以在一個Query裡面JOIN多個不同SQL Server的Table | |
可能出現issue | 如果太多連線使用Distributed Query,則會造成大量等待SOSHOST_MUTEX wait | |
缺點 | 雖然有WHERE條件,但SQL Server可能會送出SELECT * FROM the remote table,然後等資料回到本地端才進行filter | |
權限 | 只需要設定SELECT資料表的權限 | 為了產生最佳執行計畫,remote login account必須有以下權限,才能取得完整的統計資訊,若沒有以下權限,則查詢效能則會比較差 To create the best query plans the user must own the table or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role on the linked server. https://msdn.microsoft.com/en-us/library/ms175537.aspx 但SQL 2012開始則不需要此權限 |
Best Performer: Distributed query (Four-part) or OPENQUERY when executing linked server queries in SQL Server
https://blogs.msdn.microsoft.com/sqlsakthi/2011/05/08/best-performer-distributed-query-four-part-or-openquery-when-executing-linked-server-queries-in-sql-server/
Security for Linked Servers
https://msdn.microsoft.com/en-us/library/ms175537.aspx
Guidelines for Using Distributed Queries
https://msdn.microsoft.com/en-us/library/ms175129.aspx
OPENQUERY (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms188427.aspx
Optimizing Distributed Queries
https://technet.microsoft.com/en-us/library/ms180972(v=sql.105).aspx
Improving the Performance of Distributed Queries
https://sqlmag.com/database-performance-tuning/improving-performance-distributed-queries