MYSQL嵌套查询运行速度很慢?

Ste*_*fat 3 mysql join subquery sql-update

以下查询是不断超时的,是否有更少的开销方式来实现相同的功能?

UPDATE Invoices SET ispaid = 0 
WHERE Invoice_number IN (SELECT invoice_number
    FROM payment_allocation
    WHERE transactionID=305)
Run Code Online (Sandbox Code Playgroud)

我正在做的是从事务中取消分配发票,最多可以返回30多条记录,但每次我尝试运行它时都会停止数据库死机

Sah*_*hah 5

使用JOIN而不是子查询它将改善性能.

如果尚未创建,请在两个表中的Invoice_number列上创建索引.

试试这个:

UPDATE Invoices i 
INNER JOIN payment_allocation pa ON i.Invoice_number = pa.invoice_number 
SET i.ispaid = 0 
WHERE pa.transactionID = 305;
Run Code Online (Sandbox Code Playgroud)