选择 1 条记录后,对数据库中的表进行简单的更新查询需要 1 分钟以上

问题描述 投票:0回答:1

此查询耗时超过 90 秒

UPDATE `tableA`
SET
    `bill_no` = NULL
WHERE 
`tableA`.`payment_no` = 'S00005303';

如何查找速度慢的原因

我检查了显示进程列表;并且没有其他查询同时运行。

mysql performance optimization
1个回答
0
投票

您遇到的性能缓慢的原因可能是由多种原因引起的,其中包括:

  • 您的
    tableA
    表非常大,MySQL正在扫描整个表以查找付款编号为
    S00005303
  • 的一行
  • 当您运行更新时,MySQL 上恰好有大量其他查询/进程正在执行。 由于带宽有限,MySQL 花了很长时间才完成更新。

如果您的应用程序/用例涉及经常运行此更新,您可以尝试添加以下索引:

CREATE INDEX idx ON tableA (payment_no);

如果使用该索引,MySQL可以快速找到任何具有特定付款号码的记录,并进行更新。 要检查是否会使用索引,请运行:

EXPLAIN ANALYZE
SELECT *
FROM tableA
WHERE payment_no = 'S00005303';
© www.soinside.com 2019 - 2024. All rights reserved.