Надеюсь, это поможет ... Вот некоторые заявления mysql CREATE INDEX.По сути, если вы можете добавлять индексы, убедитесь, что есть индекс, который охватывает каждый из ваших столбцов, которые соединяют 2 или более таблиц.
CREATE INDEX idx_nc
ON network_communications(COMMUNICATIONS_ID);
CREATE INDEX idx_cim
ON communication_interest_mapping(COMMUNICATION_ID);
CREATE INDEX idx_ces
ON consumer_expert_score(CONSUMER_ID, CONSUMER_EXPERT_ID);
Производные таблицы не являются плохими по своей сути, но в этом случае (см. Ниже) вы извлекаете все записи из consumer_action_log, для которых comm_type_id равен 4. Похоже, что нет связи с другими таблицами.Это может быть причиной того, что sql никогда не вернется.
SELECT cr.COMMUNICATIONS_ID,
cr.CONSUMER_ID,
cr.ACTION_LOG_ID,
nc.PARENT_COMMUNICATIONS_ID,
nc.SENDER_CONSUMER_ID,
ces.EXPERT_SCORE,
cim.CONSUMER_INTEREST_EXPERT_ID
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;