У меня возникли проблемы с использованием производной таблицы в MySQL. Использует ли производная таблица по сути замедляет обработку запроса?Проблемы производительности с производной таблицей в SQL
Вот запрос, который я пытаюсь запустить. Он не будет выполняться и просто истекает.
Это действительно так. Действительно, я выделил проблему для последнего соединения. Когда я вынимаю последнее соединение, он отлично работает. Но когда я добавляю последнее соединение обратно, он отказывается выполнять.
SELECT cr.COMMUNICATIONS_ID AS ANSWER_ID,
cr.CONSUMER_ID as VIEWER_ID,
cr.ACTION_LOG_ID,
nc.PARENT_COMMUNICATIONS_ID AS QUESTION_ID,
nc.SENDER_CONSUMER_ID AS REPLIER_ID,
ces.EXPERT_SCORE AS REPLIER_EXPERTISE,
cim.CONSUMER_INTEREST_EXPERT_ID AS DOMAIN
FROM (SELECT 234 AS CONSUMER_ID,
ACTION_LOG_ID,
COMMUNICATIONS_ID
FROM consumer_action_log
WHERE COMM_TYPE_ID=4) AS cr
JOIN network_communications AS nc ON
cr.COMMUNICATIONS_ID=nc.COMMUNICATIONS_ID
JOIN communication_interest_mapping AS cim ON
nc.PARENT_COMMUNICATIONS_ID=cim.COMMUNICATION_ID
JOIN consumer_expert_score AS ces ON
nc.SENDER_CONSUMER_ID=ces.CONSUMER_ID
AND cim.CONSUMER_INTEREST_EXPERT_ID=ces.CONSUMER_EXPERT_ID;
Что происходит, когда вы запускаете этот подзапрос самостоятельно? Успешно ли это? Я бы сделал объяснение по подзапросу сам по себе, а затем еще один по запросу в целом. – TehShrike
Он преуспевает. Действительно, я выделил проблему для последнего соединения. Когда я вынимаю последнее соединение, он отлично работает. Но когда я добавляю последнее соединение обратно, он отказывается выполнять. – Spencer
Каковы результаты EXPLAIN по этому запросу? У вас есть указатель на consumer_id/expert_id в каждой таблице? Я бы рекомендовал индекс, охватывающий оба столбца в каждой таблице. – TehShrike