gpt4 book ai didi

mysql - 有没有可能加速MySQL的 "Updating Reference Tables"线程状态?

转载 作者:行者123 更新时间:2023-11-29 03:45:38 25 4
gpt4 key购买 nike

这个 MySQL 更新语句大约需要 7 秒,我想知道如何提高它的性能。整个查询非常慢,所以我开始将其分解成更小的部分(一次 100 个 ID):

UPDATE results
INNER JOIN urls
ON urls.id = results.url_id
SET results.url = urls.name
WHERE results.url_id >= 100
AND results.url_id < 200

基本上我正在构建一个非规范化的“结果”表,它最初为 results.url 设置了 NULL。我需要从 urls.name 字段中填写它,这需要很长时间。此查询修改了大约 25,000 条记录。

当我分析查询时,这是我看到的结果:

starting                    0.000052
checking permissions 0.000004
checking permissions 0.000005
Opening tables 0.000012
checking permissions 0.000003
checking permissions 0.000004
System lock 0.000004
Table lock 0.000007
init 0.000013
updating main table 0.000005
optimizing 0.000015
statistics 0.000114
preparing 0.000030
executing 0.000004
Sending data 0.239372
converting HEAP to MyISAM 0.165893
Sending data 0.239267
updating reference tables 6.585605
end 0.000029
end 0.000008
removing tmp table 0.007922
end 0.000007
query end 0.000005
freeing items 0.000286
logging slow query 0.000005
cleaning up 0.000004

由于查询大部分时间都在“更新”(超过 6.5 秒),我能在这里做些什么吗?我不清楚这是否意味着 mysql 正在花时间定位要更新的行,或者它是否花时间只是将位从一个表复制到另一个表。

如果将值从一个表复制到另一个表需要 6.5 秒,我无能为力(我假设,因为它看起来不像任何东西会进入磁盘?)但是如果它花时间定位行到更新,我认为索引可能会有所帮助。我在 results.url_id 上添加了一个索引,但它似乎并没有起到作用。

最佳答案

urls.idresults.url_id 上应用索引,然后重试。

关于mysql - 有没有可能加速MySQL的 "Updating Reference Tables"线程状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5984080/

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