此查询耗时超过 90 秒
UPDATE `tableA`
SET
`bill_no` = NULL
WHERE
`tableA`.`payment_no` = 'S00005303';
如何查找速度慢的原因
我检查了显示进程列表;并且没有其他查询同时运行。
您遇到的性能缓慢的原因可能是由多种原因引起的,其中包括:
tableA
表非常大,MySQL正在扫描整个表以查找付款编号为S00005303
如果您的应用程序/用例涉及经常运行此更新,您可以尝试添加以下索引:
CREATE INDEX idx ON tableA (payment_no);
如果使用该索引,MySQL可以快速找到任何具有特定付款号码的记录,并进行更新。 要检查是否会使用索引,请运行:
EXPLAIN ANALYZE
SELECT *
FROM tableA
WHERE payment_no = 'S00005303';