簡體   English   中英

連接包含BLOB的表時,MySQL查詢速度很慢

[英]MySQL query is slow when joining on tables containing BLOBs

我有一個帶有大量左聯接的MySQL選擇查詢,但是只有一個聯接會引起嚴重的性能問題。 這個麻煩的表中有2個BLOB字段,當我在其主鍵上保留join時,查詢運行的時間超過20倍。 因為這是導致問題的唯一表,所以我認為BLOB與它有關(即使未選擇或聯接它們)。 請注意,此表中的行數相對於其他聯接表而言不是特別大。

如何加快查詢速度?

編輯-這是查詢(有問題的表是“提交”):

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

您是否嘗試過在要加入的非PK字段上創建索引,例如submissions.action_idreward_events.action_id 這將導致查詢時間的減少與要加入的表的大小成正比。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM