web-dev-qa-db-fra.com

OpenQuiserie SQL Server vs requête régulière contre AS400

Je me connecte à une base de données SQL Server qui possède un serveur AS400 en tant que serveur lié.

J'ai découvert que les questions d'exécution de ce serveur AS400 sont beaucoup plus rapides si j'exécute la sélection dans une openquery ...

SELECT  EMEQP#
FROM _
WHERE EMALOC = '467' AND EMDLCD = 'A' AND EMSTAT NOT IN ('S', 'J', 'V')

Heure d'exécution: 46 secondes

SELECT EMEQP#
FROM
OPENQUERY(_, '
SELECT  EMEQP#
FROM _
WHERE EMALOC = ''467'' AND EMDLCD = ''A'' AND EMSTAT NOT IN (''S'', ''J'', ''V'')
')

Heure d'exécution: 1 seconde

Quelqu'un peut-il expliquer ou lier-moi à pourquoi/comment cela se passe-t-il?

5
Theo

Lorsque vous utilisez openquery la requête elle-même exécutée sur le serveur distant et que vous ne recevez que des résultats. En cas de serveur lié, votre serveur local fait tout le travail. Vous voudrez peut-être vérifier http://social.msdn.microsoft.com/forums/eu/transactsql/thread/0e68f512-143-21908f510076

5
a1ex07