Welcome to Sign in | Help

Re: link-servers on views

  •  02-03-2009, 2:49 PM

    Re: link-servers on views

    Tabele remote intr-un join local risti sa creeze niste planuri suboptime, cum ar fi:
    1) aduce local tabele remote (copie in tempdb, eventual filtrata pe conditii ce se pot aplica) apoi face join-ul
    2) face un merge hash in memorie din transferul tabelelor remote (eventaul filtrate daca se poate)
    3) aduce o tabele local (filtrata eventual) si face nested loop *remote* pentru fiecare record

    Toate aceaste variante sint extrem de ineficiente, mai ales daca tabele sint mari. Nici una nu se compara cu executarea join-ului remote si apoi aducerea locala doar a rezultatului.

    Exista unele situatii, rare, cind SQL poate sa faca 'push' la join remote, dar esti la mila providerului din linked server si a planului ales de optimizator. Cel mai simplu este sa faci un OPENQUERY la un select care face el join-ul, sau sa creezi pe remote server un view si sa selectezi din view-ul remote (preferabil, daca potzi sa modifici serverul remote).

    http://rusanu.com
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems