Tengo dos servidores de bases de datos, conectados a través de servidores vinculados. Ambas son bases de datos SQL Server 2008R2, y la conexión del servidor vinculado se realiza a través de un enlace regular "SQL Server", utilizando el contexto de seguridad del inicio de sesión actual. Los servidores vinculados están en el mismo centro de datos, por lo que la conexión no debería ser un problema.
Utilizo la siguiente consulta para verificar qué valores de la columna identifier
están disponibles de forma remota, pero no localmente.
SELECT
identifier
FROM LinkedServer.RemoteDb.schema.[TableName]
EXCEPT
SELECT DISTINCT
identifier
FROM LocalDb.schema.[TableName]
En ambas tablas hay índices no agrupados en la columna identifier
. A nivel local, hay alrededor de 2,6 millones de filas, de forma remota solo 54. Sin embargo, al mirar el plan de consulta, el 70% del tiempo de ejecución se dedica a "ejecutar consultas remotas". Además, al estudiar el plan de consulta completo, el número de filas locales estimadas es en 1
lugar de 2695380
(que es el número de filas estimadas al seleccionar solo la consulta que viene después EXCEPT
).
Al ejecutar esta consulta, lleva mucho tiempo.
Me hace preguntarme: ¿por qué es esto? ¿La estimación está "simplemente" lejos, o las consultas remotas en servidores vinculados son realmente tan caras?