Je dois interroger le tableau des commandes pour obtenir le décompte de toutes les commandes pour les transactions d'hier, groupées par date d'expédition. Ensuite, j'ai besoin d'une colonne supplémentaire pour donner le total des commandes pour la date d'expédition pour toutes les transactions. Lorsque j'ai ajouté cette deuxième colonne, le temps de traitement a augmenté exponentiellement (ce qui était attendu) à 109s. Est-ce que je pourrais améliorer ce SQL? Je veux juste savoir s'il me manque quelque chose de fondamental ici.Aide à l'optimisation des requêtes Oracle - Multi-passes
SELECT t.shipping_date
, t.net_orders
, count(*) as total_orders
FROM (
SELECT s.store_num
, s.store_cd
, to_char(o.shipping_date, 'MM/DD/YYYY') as shipping_date
, COUNT (*) as net_orders
FROM order o left
join store s
on (s.store_num = o.store_num)
WHERE TRUNC (o.order_date) = TRUNC (SYSDATE - 1)
AND s.store_cd = 'ZZZ'
AND o.status in ('A', 'B')
GROUP BY s.store_num
, s.store_cd
, to_char(shipping_date, 'MM/DD/YYYY')
) t
LEFT JOIN order o ON
(TRUNC (o.shipping_date) = to_date(t.shipping_date, 'MM/DD/YYYY')
and o.store_num = t.store_num)
WHERE o.status in ('A', 'B')
GROUP BY t.shipping_date, t.net_orders;
Je index sur les toutes ces colonnes, en plus des expressions suivantes: TRUNC (ORDER_DATE) et TRUNC (shipping_date).
Veuillez préciser à partir de quelle (s) table (s) les champs 'shipping_date' et' order_date' (requête interne). – ThinkJet
J'ai modifié le code SQL ci-dessus selon votre demande. Merci. – Bradford