У меня есть интересный случай, когда наборы результатов, возвращаемых SQL Server, различаются в зависимости от того, выполняется ли запрос локально или удаленно.
По сути, если я выполняю следующий запрос:
SELECT p.ID AS Id
FROM csdb.users.People AS p
LEFT JOIN csdb.users.Accounts AS a ON p.ID = a.IdentityId
затем выполняется левое соединение, и я получаю 633 строки назад.Однако если я удаленно выполню запрос как:
SELECT p.ID AS Id
FROM quantdb.csdb.users.People AS p
LEFT JOIN quantdb.csdb.users.Accounts AS a ON p.ID = a.IdentityId
, то левое соединение не будет выполнено, будет выполнено сканирование индекса таблицы People и будет возвращено только 564 записи.По сути, кажется, что в удаленном случае оптимизатор говорит: «Ну, вам не нужны никакие столбцы из таблицы« Счета », поэтому я не буду выполнять объединение», тогда как в другом случае он говорит: «Я сделаюобъединение '.
Является ли эта разница в поведении оптимизатора для удаленных и локальных запросов известной «особенностью» SQL Server или это ошибка?
Мы используем SQL Server 2008SP1