sql >> Databáze >  >> RDS >> Sqlserver

Příklad dotazu SQL Server Linked Server

Formát by měl být pravděpodobně:

<server>.<database>.<schema>.<table>

Například:Databázový server1.db1.dbo.table1

Aktualizovat :Vím, že je to stará otázka a odpověď, kterou mám, je správná; nicméně si myslím, že každý, kdo na to narazí, by měl vědět pár věcí.

Konkrétně při dotazu na propojený server v situaci spojení CELÉ tabulka z propojeného serveru bude pravděpodobná být stažen na server, ze kterého se dotaz provádí, aby bylo možné provést operaci spojení. V případě OP oba table1 z DB1 a table1 z DB2 budou v celém rozsahu přeneseny na server provádějící dotaz, pravděpodobně s názvem DB3 .

Pokud máte velké stoly, může výsledkem je operace, jejíž provedení trvá dlouho. Koneckonců je nyní omezena rychlostí síťového provozu, která je řádově nižší než přenosová rychlost paměti nebo dokonce disku.

Je-li to možné, proveďte jediný dotaz proti vzdálenému serveru, aniž byste se připojovali k místní tabulce, abyste získali potřebná data do dočasné tabulky. Pak se na to zeptej.

Pokud to není možné, musíte se podívat na různé věci, které by způsobily, že SQL server bude muset načíst celou tabulku lokálně. Například pomocí GETDATE() nebo dokonce určitá spojení. Mezi další vrahy výkonu patří neposkytnutí příslušných práv.

Další informace najdete na http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/.



  1. Rozdíl mezi NullIf() a IfNull() v SQLite

  2. Jak vymazat všechny položky v mezipaměti v Oracle

  3. PŘIPOJIT SE k MySQL vs POUŽÍVAT?

  4. Jak mapovat pole pole PostgreSQL v Django ORM