Bonjour
J'ai besoin de transformer cette requête générée :
Comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT * FROM avl_event JOIN avl_vehicle ON (avl_event.VEHICLE_ID=avl_vehicle.ID) WHERE avl_vehicle.COMPANY_ID=2 AND (avl_event.CREATED_AT>='2010-01-05 05:00:00' AND avl_event.CREATED_AT<='2010-01-06 04:59:00') AND avl_event.EVENT_TYPE_ID IN (30,31) AND avl_event.VEHICLE_ID=avl_vehicle.ID ORDER BY UPPER(avl_vehicle.NAME) ASC,avl_event.VEHICLE_ID ASC,avl_event.CREATED_AT ASC,avl_event.ID ASC
J'ai trouvé de la documentation ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT * FROM ( SELECT * FROM avl_event WHERE avl_event.CREATED_AT>='2009-12-29 05:00:00' AND avl_event.CREATED_AT<='2010-01-06 04:59:00' ) event JOIN avl_vehicle ON event.VEHICLE_ID=avl_vehicle.ID WHERE avl_vehicle.COMPANY_ID=2 AND event.EVENT_TYPE_ID IN (30,31) ORDER BY UPPER(avl_vehicle.NAME) ASC,event.VEHICLE_ID ASC,event.CREATED_AT ASC,event.ID ASC
http://snippets.symfony-project.org/snippet/75
Mais il semble que ca ne marche que sur les clause where, et non sur les jointures. Est ce que vous savez comment je pourrais faire ?
La première requête prend 12 sec, la seconde 0.5 (elle utilise le bon index...)
Merci
Pierre
Partager