gpt4 book ai didi

mysql - 当超过 100 万条记录时,更新查询在 mysql 上执行速度非常慢

转载 作者:行者123 更新时间:2023-12-04 15:35:49 26 4
gpt4 key购买 nike

查询需要一个多小时。

有人可以帮忙吗?提前致谢。

我的查询是

UPDATE coupons SET expiration_date='2020-06-06'

我的表结构

+-----------------------+--------------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+--------------------------------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| vendor_id | int(11) | NO | MUL | NULL | |
| type | enum('food','shopping','home','lifestyle') | NO | | NULL | |
| title | varchar(255) | NO | MUL | NULL | |
| slug | varchar(255) | YES | | NULL | |
| thumbnail_image | varchar(600) | YES | | NULL | |
| coupon_name | varchar(255) | NO | | NULL | |
| expiration_date | date | YES | MUL | NULL | |
| discount_type | enum('d','p') | YES | | NULL | |
| discount_rate | double(7,2) | YES | | NULL | |
| code_type | enum('i','c','u','b') | NO | | NULL | |
| code | text | YES | | NULL |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL |
+-----------------------+--------------------------------------------+------+-----+---------+----------------+

最佳答案

其他人指出您的UPDATE 语句更新表中的每一行。这本质上需要很长时间。而且,由于数据库中的事务/回滚,它将占用大量 RAM 和磁盘空间。

您没有告诉我们您是如何在 expiration_date 上定义您的一个或多个索引的,所以这个答案是有点猜测。具体来说,除非 expiration_date 在它自己的索引中或者是复合索引中的第一列,否则这个答案不会很好地执行。

尝试使用这样的更新查询,一次更新 1000 行。

UPDATE coupons 
SET expiration_date='2020-06-06'
WHERE expiration_date <> '2020-06-06'
LIMIT 1000

重复查询,直到不再更新任何行。完成更新还是需要一段时间,但不会独占表,也不会产生海量交易。

注意,不要尝试一次运行多个查询。

关于mysql - 当超过 100 万条记录时,更新查询在 mysql 上执行速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59800212/

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