Difference entre 2 requetes
Je voudrais connaitre la différence entre ces deux requêtes :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| IF EXISTS ( SELECT *
FROM Ordres Ord1
INNER JOIN Transactions
ON Ord1.Ref_Ordre = Transactions.Ref_Ord_Acheteur
GROUP BY Ord1.Ref_Ordre, Ord1.Volume
HAVING Ord1.Volume < SUM ( Transactions.Volume ) ) OR
EXISTS ( SELECT *
FROM Ordres Ord1
INNER JOIN Transactions
ON Ord1.Ref_Ordre = Transactions.Ref_Ord_Vendeur
GROUP BY Ord1.Ref_Ordre, Ord1.Volume
HAVING Ord1.Volume < SUM ( Transactions.Volume ) ) |
et celle ci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| IF EXISTS
(
SELECT 1
FROM dbo.Ordres o
INNER JOIN
(
SELECT Ref_Ord_Acheteur, SUM ( Volume ) Volume
FROM dbo.Transactions
GROUP BY Ref_Ord_Acheteur
) t ON o.Ref_Ordre = t.Ref_Ord_Acheteur
WHERE o.Volume < t.Volume
OR EXISTS
(
SELECT 1
FROM dbo.Ordres o
INNER JOIN
(
SELECT Ref_Ord_Vendeur, SUM ( Volume ) Volume
FROM dbo.Transactions
GROUP BY Ref_Ord_Vendeur
) t ON o.Ref_Ordre = t.Ref_Ord_Vendeur
WHERE o.Volume < t.Volume
) |
merci de me fournir des explications
Reformulation de la question initiale
Citation:
Envoyé par
james_usus
peut on améliorer cette requête car elle est très lente :
Voici ce que profiler révèle :
Duration : 153258 ; CPU :19075 ; Reads: 2180629 ; Writes: 34
IF EXISTS
(
SELECT *
FROM Ordres Ord1
INNER JOIN Transactions ON Ord1.Ref_Ordre = Transactions.Ref_Ord_Acheteur
GROUP BY Ord1.Ref_Ordre, Ord1.Volume
HAVING Ord1.Volume < SUM ( Transactions.Volume )
)
OR EXISTS
(
SELECT *
FROM Ordres Ord1
INNER JOIN Transactions ON Ord1.Ref_Ordre = Transactions.Ref_Ord_Vendeur
GROUP BY Ord1.Ref_Ordre, Ord1.Volume
HAVING Ord1.Volume < SUM ( Transactions.Volume )
)
Merci d'avance