optimisatin d'une requete
Salut,
je voudrais optimiser la requete ci dessous car elle prend bq de temps
J'ai trois table
Code:
1 2 3
| ORDER(orderid varchar, instid varchar)
ORDERST(orderid varchar, updatenum integer, price varchar)
INST(instid varchar, place varchar) |
Je voudrais récuperer pour chaque "place" la moyenne des "price" des orderids avec le plus grand updatenum
Par exemple
si j'ai dans la table order
Citation:
('ord1', 'inst1')
('ord2', 'inst2')
('ord3', 'inst1')
('ord4', 'inst2')
et dans INST on a
('inst1', 'x')
('inst2', 'y')
et dans ORDERST
('ord1', 1, 0)
('ord1', 2, 10)
('ord1', 3, 15)
('ord3', 1, 0)
('ord3', 2, 20)
('ord3', 3, 20)
donc on devra recuperer pour la place x un average price de AVG(20+15)
voila la requete que j'essaye de faire
Code:
1 2 3 4 5 6 7
| select AVG(cast(os.PRICE as DOUBLE))
from ORDERST os
INNER JOIN ORDER co
ON os.ORDERID = o.ORDERID
INNER JOIN INST inst
ON o.INSTID = inst.INSTID
WHERE inst.PLACE = 'X' AND os.updatenum IN (SELECT MAX(os2.updatenum) FROM ORDERST os2 where os.ORDERID = os2.ORDERID) |
Comme vous pouvez le deviner, c'est le max qui me trouble et que j'arrive pas à bien placer
cette requete n'est pas terrible a cause du IN, elle prend bq de temps, comment pourrais je l'améliorer
Merci