现在我正在使用 PHP 运行这两个查询:
UPDATE members SET balance = balance - $cost WHERE id = '$member'");
UPDATE campaigns SET h_hits = h_hits + 1,
d_hits = d_hits + 1,
traffic = traffic + 1,
spent = spent + $cost,
timestamp = CURRENT_TIMESTAMP
WHERE id = '$row_id'
我看到了一些关于运行多个更新的问题,但其中大多数似乎共享相同的WHERE
语句,而我的需要使用不同的语句:/
所以这是我的两个问题:
您可以使用 组合它们CROSS JOIN
,这不需要两个表中的行之间有任何关系。您为WHERE
子句中的每个表指定条件。
UPDATE members AS m
CROSS JOIN campaigns AS c
SET m.balance = m.balance - $cost,
c.h_hits = c.h_hits + 1,
c.d_hits = c.d_hits + 1,
c.traffic = c.traffic + 1,
c.spent = c.spent + $cost,
timestamp = CURRENT_TIMESTAMP
WHERE c.id = '$member'
AND m.id = '$row_id'
这是否比将它们作为两个查询执行更好很难预测,因为这取决于许多因素,例如客户端和数据库服务器之间的连接延迟。如果他们在同一台机器上,我怀疑不是。您应该对这两种方法进行基准测试,以确定哪种方法最适合您的情况。
如果您要进行许多这样的查询,则准备一次查询然后使用不同的参数执行它们应该可以提高性能,因为只有在准备好查询时才需要对其进行解析。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句