gpt4 book ai didi

连接包含 BLOB 的表时,MySQL 查询速度很慢

转载 作者:行者123 更新时间:2023-11-29 03:13:47 24 4
gpt4 key购买 nike

我有一个带有大量左连接的 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?这应该会导致查询时间的减少与您要加入的表的大小成比例。

关于连接包含 BLOB 的表时,MySQL 查询速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4069676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com