Eu tenho dois servidores de banco de dados, conectados via servidores vinculados. Ambos são bancos de dados do SQL Server 2008R2 e a conexão do servidor vinculado é feita por um link "SQL Server" regular, usando o contexto de segurança do logon atual. Os servidores vinculados estão no mesmo centro de dados, portanto, a conexão não deve ser um problema.
Eu uso a seguinte consulta para verificar quais valores da coluna identifier
estão disponíveis remotamente, mas não localmente.
SELECT
identifier
FROM LinkedServer.RemoteDb.schema.[TableName]
EXCEPT
SELECT DISTINCT
identifier
FROM LocalDb.schema.[TableName]
Nas duas tabelas há índices não agrupados na coluna identifier
. Localmente, existem cerca de 2,6 milhões de linhas, remotamente, apenas 54. No entanto, ao analisar o plano de consulta, 70% do tempo de execução é dedicado à "execução de consulta remota". Além disso, ao estudar o plano de consulta completo, o número de linhas locais estimadas é em 1
vez de 2695380
(que é o número de linhas estimadas ao selecionar apenas a consulta seguinte EXCEPT
).
Ao executar esta consulta, leva muito tempo.
Isso me faz pensar: por que isso? A estimativa está "apenas" muito distante, ou as consultas remotas nos servidores vinculados são realmente tão caras?