Natknąłem się na tę bardzo dziwną sytuację i pomyślałem, że podrzucę ją tłumowi, aby dowiedzieć się dlaczego.WEJŚCIE WEWNĘTRZNE na podłączonym serwerze Tabela znacznie wolniejsza niż pod-zapytania
Mam zapytanie, które zostało łączący tabelę na połączonym serwerze:
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)
ta kwerenda mówił zawsze (nigdy nie dowiedziałem się rzeczywisty czas pracy), a to jest, gdy zauważyłem B
nie miał indeks, więc dodałem go, ale to nie rozwiązało problemu. Wreszcie, z rozpaczy próbowałem:
select a.*, b.phone
from table_a a,
join (select id, phone from remote.B) as b on b.id = a.id
Ta wersja zapytaniu, w moim umyśle jak najmniej, powinny mieć takie same wyniki, ale lo i oto jej odpowiadać natychmiast!
Jakieś pomysły, dlaczego ktoś zawiesiłby się, a drugi proces szybko? I tak, zaczekałem, aby upewnić się, że indeks został zbudowany przed uruchomieniem obu.
Czy spojrzałeś na plan wykonania dla obu? Czy różnią się? Czy wydałeś _dbcc dropcleanbuffers_ pomiędzy każdą metodą? – canon
Mniej więcej ile rekordów znajduje się w 'remote.B'? – Yuck
"Zdalny" DB znajduje się na innym serwerze, do którego można uzyskać dostęp za pośrednictwem serwera linkserver i istnieje około 600 wierszy. – Limey