Me encontré con esta situación muy extraña, y pensé que la lanzaría a la multitud para descubrir el POR QUÉ.INNER JOIN en Linked Server Tabla mucho más lenta que Sub-Query
Tengo una consulta que se une a una tabla en un servidor vinculado:
select a.*, b.phone
from table_a a,
join remote.table_b b on b.id = a.id
(lots of data on A, but very few on B)
esta consulta se refería siempre (ni siquiera descubierto el tiempo de ejecución real), y es entonces cuando me di cuenta de B
no tenía índice, así que lo agregué, pero eso no solucionó el problema. Por último, de la desesperación traté:
select a.*, b.phone
from table_a a,
join (select id, phone from remote.B) as b on b.id = a.id
Esta versión de la consulta, en mi mente como mínimo, deben tener los mismos resultados, pero he aquí que, su respuesta inmediata!
¿Alguna idea de por qué uno se bloquea y el otro proceso rápidamente? Y sí, esperé para asegurarme de que el índice había sido creado antes de ejecutar ambos.
¿Has mirado el plan de ejecución para ambos? ¿Difieren? ¿Expediste un _dbcc dropcleanbuffers_ entre cada método? – canon
Aproximadamente ¿cuántos registros hay en 'remote.B'? – Yuck
La base de datos "remota" está en otro servidor al que se accede a través de un servidor de enlaces y hay alrededor de 600 filas. – Limey