[英]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 BY
或DISTINCT
关键字。 此查询应产生正确的行数以更新较小的表。
您可以尝试以下查询-
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.