donc, j'ai essayé tout ce que je peux penser, et ne peut pas obtenir cette requête en moins de 3 secondes sur mon serveur local. Je sais que le problème a à voir avec l'OR référençant à la fois le owner_id et le person_id. si je cours l'un ou l'autre, cela arrive instantanément, mais avec un ou je n'arrive pas à le faire fonctionner - j'ai cherché à réécrire le code, mais la façon dont l'application a été conçue ne sera pas facile. Y at-il un moyen que je peux appeler un équivalent ou qui ne prendra pas si longtemps? voici le sql:Slow MySQL Query Rupture de mon dos!
SELECT event_types.name as event_type_name,event_types.id as id, count(events.id) as
count,sum(events.estimated_duration) as time_sum FROM events,event_types
WHERE event_types.id = events.event_type_id AND events.event_type_id != '4'
AND (events.status!='cancelled')
AND events.event_type_id != 64
AND (events.owner_id = 161 OR events.person_id = 161)
GROUP BY event_types.name
ORDER BY event_types.name DESC;
Voici la soupe Expliquer, bien que je suppose qu'il est inutile la cause il y a probablement une meilleure façon de structurer ce ou qui saute aux yeux:
merci beaucoup! chris.
+----+-------------+-------------+-------+---------------------------------------------------------------------------------------------------------+-------------------------------+---------+-------------------------------------+------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+-------+---------------------------------------------------------------------------------------------------------+-------------------------------+--
| 1 | SIMPLE | event_types | range | PRIMARY | PRIMARY | 4 | NULL | 78 | Using where; Using temporary; Using filesort |
| 1 | SIMPLE | events | ref | index_events_on_status,index_events_on_event_type_id,index_events_on_person_id,index_events_on_owner_id | index_events_on_event_type_id | 5 | thenumber_production.event_types.id | 907 | Using where |
+----+-------------+-------------+-------+---------------------------------------------------------------------------------------------------------+-------------------------------+---------+-------------------------------------+------+----------------------------------------------+
Quels sont les index sur 'events' et' event_types'? – wallyk
D'accord, la sortie de 'SHOW CREATE TABLE' sur toutes les tables pertinentes serait très utile ici. –