Question

J'ai une table appelée Table avec des colonnes:

  • ID (int, clé primaire, cluster, index unique)
  • TEXT (varchar 15)

sur un serveur lié MSSQL appelé LS . serveur lié est sur le même ordinateur serveur. Et:

Quand j'appelle:

SELECT ID, TEXT FROM OPENQUERY(LS, 'SELECT ID, TEXT FROM Table')

Il faut 400 ms .

Quand j'appelle:

SELECT ID, TEXT FROM LS.dbo.Table

Il faut 200 ms

Et quand je l'appelle directement la requête tout en étant au serveur LS:

SELECT ID, TEXT FROM dbo.Table

Il faut 100 ms .

Dans de nombreux endroits que j'ai lu que OPENQUERY est plus rapide, mais dans ce cas simple, il ne semble pas fonctionner. Que puis-je faire pour cette requête plus rapide quand je l'appelle d'un autre serveur, pas directement LS?

Était-ce utile?

La solution

Qu'en est-SELECT ID, TEXT FROM OPENQUERY(LS, 'SELECT ID, TEXT FROM dbo.Table') pour effectuer les requêtes équivalentes en utilisant le schéma?

Quoi qu'il en soit, lisez ceci article de Linchi Shea sur les serveurs liés

Remarque: un appel de serveur lié sera toujours plus lent qu'un appel direct. De SQL Server à votre SSMS se passe maintenant par une autre instance de SQL Server première, donc bien sûr, il sera plus lent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top