2
我有一個包含大量左連接的MySQL選擇查詢,但只有一個連接導致嚴重的性能問題。這個麻煩的表中有2個BLOB字段,當我在主鍵上加入連接時,查詢需要超過20次才能運行。由於這是造成問題的唯一表格,因此我認爲BLOB與它有關(即使它們未被選中或加入)。請注意,此表中的行數相對於其他連接的表並不特別大。加入包含BLOB的表時,MySQL查詢速度很慢
如何加快此查詢?
編輯 - 這裏是查詢(有問題的表是 「意見書」):
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
下面是 「意見」 表中的EXPLAIN結果:
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
請問您可以發表查詢嗎?在查看時優化查詢總是更容易。 – Quassnoi 2010-11-01 14:21:18
同時發佈EXPLAIN的輸出和涉及的表格結構將有所幫助 – Mchl 2010-11-01 14:22:30