J'ai une requête de sélection MySQL avec un grand nombre de jointures à gauche, mais une seule des jointures cause de sérieux problèmes de performance. Cette table gênante contient 2 champs BLOB, et quand j'ai quitté la jointure sur sa clé primaire, la requête prend 20 fois plus de temps à s'exécuter. Puisque c'est la seule table causant le problème, je suppose que les BLOB ont quelque chose à voir avec cela (même s'ils ne sont pas sélectionnés ou joints). Notez que le nombre de lignes dans cette table n'est pas particulièrement important par rapport aux autres tables jointes.La requête MySQL est lente lors de la jonction sur des tables contenant des BLOB
Comment puis-je accélérer cette requête?
EDIT - voici la requête (la table problématique est "observations"):
SELECT
actions.id,
actions.facebook_id,
actions.created_at,
actions.current_total_points,
actions.current_weekly_points,
submissions.id AS submission_id,
submissions.challenge_week_number AS submission_challenge_week_number,
submissions.challenge_number_in_week AS submission_challenge_number_in_week,
reward_events.id AS reward_event_id,
reward_events.reward_event_type_id,
reward_events.action_id,
reward_events.awarded_badge_type_id,
reward_events.for_week_number AS reward_event_for_week_number,
reward_events.challenge_number_in_week AS reward_event_challenge_number_in_week,
challenge_weeks.week_number
from actions
left join submissions ON submissions.action_id = actions.id
left join reward_events ON reward_events.action_id = actions.id
left join challenge_weeks ON challenge_weeks.start_date <= CAST(actions.created_at AS DATE) AND challenge_weeks.end_date >= CAST(actions.created_at AS DATE)
where actions.facebook_id = '12345678'
order by actions.id asc
Voici le résultat expliquiez la table "soumissions":
id bigint(11) unsigned NO PRI auto_increment
action_id bigint(11) NO
title varchar(255) YES
description varchar(255) YES
submission_type enum('alpha','beta','gamma') YES
filename varchar(255) YES
ip_address varchar(255) YES
community_release bit(1) YES
approved bit(1) YES
fullsize longblob YES
thumb longblob YES
modified_at timestamp YES CURRENT_TIMESTAMP
challenge_week_number tinyint(1) YES
challenge_number_in_week tinyint(1) YES
Pourriez-vous s'il vous plait signaler votre requête? Il est toujours plus facile d'optimiser une requête quand vous la voyez. – Quassnoi
Également afficher la sortie de EXPLAIN et les structures des tables impliquées aidera beaucoup – Mchl