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多条记录,但每次我尝试运行它时都会停止数据库死机
使用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)