Joindre des tables sur différentes bases de données de serveurs
Lors de la récupération de données de plusieurs tables dans différentes bases de données situées sur différents serveurs, il existe plusieurs façons de joindre ces tables efficacement.
1. Utiliser le lien du serveur
Créez des liens de serveur via la commande sp_addlinkedserver
pour établir des connexions entre les bases de données. Accédez via requête comme d'habitude, en préfixant le nom du serveur lié avec le nom de la base de données, comme indiqué dans l'exemple :
<code class="language-sql">-- 来自 DB1 SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2 ON tab1.ID = tab2.ID</code>
2. Utilisez OPENQUERY
Vous pouvez également envisager d'utiliser OPENQUERY
pour exécuter des instructions SQL à distance et récupérer des données à partir d'autres serveurs. Cette méthode optimise la bande passante et optimise les requêtes sur le serveur distant. Vous pouvez mettre en cache les données dans une table temporaire ou en mémoire pour une connexion ultérieure, comme indiqué dans l'exemple suivant :
<code class="language-sql">-- 从其他数据库服务器获取数据 SELECT * INTO #myTempTable FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]') -- 现在我可以连接我的临时表以查看数据 SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID</code>
Remarques
Le choix entre Server Link et OPENQUERY
dépend du cas d'utilisation spécifique et des exigences de performances. Les liens serveur fournissent une connexion permanente, tandis que OPENQUERY
permet une récupération temporaire des données. Pour les scénarios nécessitant un filtrage, OPENQUERY
peut être plus efficace. Veuillez vous référer à la documentation pour plus d'exemples et de scénarios.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!