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?
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