首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL更新查询占用的时间太长

MySQL更新查询占用的时间太长
EN

Stack Overflow用户
提问于 2012-05-30 19:35:35
回答 2查看 1.2K关注 0票数 0

我有两张表,分别叫Stops和Stop_Times,它们与旅行社有关。停止具有8K条记录和具有320万条记录的Stop_Times表。当我执行UPDATE查询时,它花费了太多时间。它花了3.5-4个小时,但仍然没有更新记录。我的问题是-

代码语言:javascript
复制
UPDATE Stops
   JOIN Stop_Times ON Stops.stop_id = Stop_Times.stop_id
SET
   Stops.route_type = Stop_Times.route_type,
   Stops.agency_id = Stop_Times.agency_id
WHERE Stops.location_type = 0

对于这两个表,我使用MyISAM存储引擎。我有索引站和Stop_Times表。

我在Linux CentOs上运行这个查询。

有没有办法提高更新查询的速度?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-31 20:12:44

您可以尝试执行以下查询:

代码语言:javascript
复制
UPDATE
Stops AS s
LEFT JOIN (
    SELECT
        route_type, agency_id, stop_id
    FROM
        Stop_Times
    GROUP BY
        stop_id
) AS st ON
    st.stop_id = s.stop_id
SET s.route_type = st.route_type, s.agency_id = st.agency_id
票数 0
EN

Stack Overflow用户

发布于 2012-05-30 20:12:32

您可能希望考虑在您的应用程序中使用非常大的数据集更新一个小的(8K)表意味着什么。

从您提供给我们的少量信息中无法猜测您的业务逻辑。您的UPDATE查询看起来就像是在Stops表中挖掘行,对每个行冗余地更新数万次。

通常,当从大型表创建小型表时,大型表上的查询是某种类型的摘要查询,包含GROUP BYDISTINCT关键字。此查询应生成用于更新较小表的正确行数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10815502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档