Tôi có hai máy chủ cơ sở dữ liệu, được kết nối qua Máy chủ được liên kết. Cả hai đều là cơ sở dữ liệu SQL Server 2008R2 và kết nối máy chủ được liên kết được thực hiện thông qua liên kết "Máy chủ SQL" thông thường, sử dụng bối cảnh bảo mật của thông tin đăng nhập hiện tại. Các máy chủ được liên kết đều ở cùng một trung tâm dữ liệu, vì vậy kết nối không phải là vấn đề.
Tôi sử dụng truy vấn sau đây để kiểm tra giá trị nào của cột identifier
có sẵn từ xa, nhưng không phải cục bộ.
SELECT
identifier
FROM LinkedServer.RemoteDb.schema.[TableName]
EXCEPT
SELECT DISTINCT
identifier
FROM LocalDb.schema.[TableName]
Trên cả hai bảng là các chỉ mục không được nhóm trên cột identifier
. Tại địa phương có khoảng 2,6 triệu hàng, chỉ từ xa 54. Tuy nhiên, khi nhìn vào kế hoạch truy vấn, 70% thời gian thực hiện được dành cho "thực hiện truy vấn từ xa". Ngoài ra, khi nghiên cứu kế hoạch truy vấn hoàn chỉnh, số lượng các hàng cục bộ ước tính 1
thay vì 2695380
(là số lượng các hàng ước tính khi chỉ chọn truy vấn đến sau EXCEPT
).
Khi thực hiện truy vấn này, thực sự phải mất một thời gian dài.
Nó làm tôi tự hỏi: Tại sao lại thế này? Là ước tính "chỉ" cách, hoặc các truy vấn từ xa trên các máy chủ được liên kết thực sự đắt tiền?