我可以在 MySQL 中组合两个更新查询以使其更快吗?

堆垛机

现在我正在使用 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语句,而我的需要使用不同的语句:/

所以这是我的两个问题:

  1. 我如何将这些组合成一个查询?
  2. 最重要的是,将它作为单个查询而不是两个单独的查询运行会更快吗?
巴马

您可以使用 组合它们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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以使一个MySQL表的两个属性始终具有相同的值吗?

来自分类Dev

我可以使用MySQL中的查询求和某个单元格的值吗?

来自分类Dev

MySQL:我可以创建两个具有相同数据字段的表吗?

来自分类Dev

mysql 我可以按最早的两个日期排序吗?

来自分类Dev

我可以使用一个查询更新同一项目中的两个数组吗?

来自分类Dev

我可以加入mysql表动态吗

来自分类Dev

在Oracle SQL中,我可以查询表的分区而不是整个表的分区,以使其运行更快吗?

来自分类Dev

我可以使用一个控制器来更新AngularJS中的两个视图吗?

来自分类Dev

我可以使用isset()来控制mysql查询的执行

来自分类Dev

我可以使用isset()来控制mysql查询的执行

来自分类常见问题

我可以使用SSH隧道转发MySQL命令吗?

来自分类Dev

我可以使用MySQL Workbench创建MariaDB吗?

来自分类Dev

我可以使用Homebrew安装MySQL 5.6.26吗?

来自分类Dev

我可以使用MySQL Workbench创建数据吗?

来自分类Dev

我可以使用Homebrew安装MySQL 5.6.26吗?

来自分类Dev

我可以使HTML表单加载MySQL数据吗?

来自分类Dev

我可以使用LINQ查询两个列表以填充单个列表吗

来自分类Dev

可以通过两个(mysql)查询在2个周期内检索数据吗?

来自分类Dev

我可以使用两个溢出属性吗?

来自分类Dev

我可以使用LINQ比较两个集合之间缺少,添加或更新的内容吗

来自分类Dev

我可以使用node.js将mysql查询结果调用为html文件吗?

来自分类Dev

我们可以使用mysql中的字符串函数从单个查询中提取多个数据吗?

来自分类Dev

我可以加入包含或在mySQL中赞吗?

来自分类Dev

我可以在MySQL中设置条件默认值吗?

来自分类Dev

我可以在MySQL Workbench的架构面板中隐藏架构吗

来自分类Dev

我可以在mysql中添加带日期的时间吗?

来自分类Dev

MySQL:我可以使用一个SELECT ... FOR UPDATE来“保护”多个表吗?(锁定)

来自分类Dev

MySQL:我可以使用一个SELECT ... FOR UPDATE来“保护”多个表吗?(锁定)

来自分类Dev

我可以在MySQL中创建多少个用户帐户?

Related 相关文章

  1. 1

    我可以使一个MySQL表的两个属性始终具有相同的值吗?

  2. 2

    我可以使用MySQL中的查询求和某个单元格的值吗?

  3. 3

    MySQL:我可以创建两个具有相同数据字段的表吗?

  4. 4

    mysql 我可以按最早的两个日期排序吗?

  5. 5

    我可以使用一个查询更新同一项目中的两个数组吗?

  6. 6

    我可以加入mysql表动态吗

  7. 7

    在Oracle SQL中,我可以查询表的分区而不是整个表的分区,以使其运行更快吗?

  8. 8

    我可以使用一个控制器来更新AngularJS中的两个视图吗?

  9. 9

    我可以使用isset()来控制mysql查询的执行

  10. 10

    我可以使用isset()来控制mysql查询的执行

  11. 11

    我可以使用SSH隧道转发MySQL命令吗?

  12. 12

    我可以使用MySQL Workbench创建MariaDB吗?

  13. 13

    我可以使用Homebrew安装MySQL 5.6.26吗?

  14. 14

    我可以使用MySQL Workbench创建数据吗?

  15. 15

    我可以使用Homebrew安装MySQL 5.6.26吗?

  16. 16

    我可以使HTML表单加载MySQL数据吗?

  17. 17

    我可以使用LINQ查询两个列表以填充单个列表吗

  18. 18

    可以通过两个(mysql)查询在2个周期内检索数据吗?

  19. 19

    我可以使用两个溢出属性吗?

  20. 20

    我可以使用LINQ比较两个集合之间缺少,添加或更新的内容吗

  21. 21

    我可以使用node.js将mysql查询结果调用为html文件吗?

  22. 22

    我们可以使用mysql中的字符串函数从单个查询中提取多个数据吗?

  23. 23

    我可以加入包含或在mySQL中赞吗?

  24. 24

    我可以在MySQL中设置条件默认值吗?

  25. 25

    我可以在MySQL Workbench的架构面板中隐藏架构吗

  26. 26

    我可以在mysql中添加带日期的时间吗?

  27. 27

    MySQL:我可以使用一个SELECT ... FOR UPDATE来“保护”多个表吗?(锁定)

  28. 28

    MySQL:我可以使用一个SELECT ... FOR UPDATE来“保护”多个表吗?(锁定)

  29. 29

    我可以在MySQL中创建多少个用户帐户?

热门标签

归档