繁体   English   中英

MySQL更新查询花费太多时间

[英]MySQL Update Query taking too much time

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

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存储引擎。 我已索引Stops和Stop_Times表。

我在Linux CentO上运行此查询。

有什么方法可以提高UPDATE查询的速度吗?

您可能希望考虑一下在应用程序中用大数据集更新小(8K)表的含义。

从您提供给我们的少量信息中不可能猜测出您的业务逻辑。 您的UPDATE查询看起来像是敲击Stops表中的行,每次重复更新数万次。

通常,从大型表创建小型表时,大型表上的查询是某种汇总查询,其中包含GROUP BYDISTINCT关键字。 此查询应产生正确的行数以更新较小的表。

您可以尝试以下查询-

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM