多个查询执行还是一个查询和nextRowset() to SELECT?



执行多个查询的效率:

这个与nextRowset()函数移动查询

$stmt = $db->query("SELECT 1; SELECT 2;");
$info1 = $stmt->fetchAll();
$stmt->nextRowset();
$info2 = $stmt->fetchAll();

或多个执行计划,这是更容易管理?

$info1 = $db->query("SELECT 1;")->fetchAll();
$info2 = $db->query("SELECT 2;")->fetchAll();

代码的性能可能是相似的。

对我来说,底部的代码对你的软件设计更有效,因为:

  • 它更容易读
  • 可以用更少的错误机会更改,因为它们每个只处理1个查询
  • 单个查询及其交互可以很容易地移动到不同的功能,可以单独测试

这就是为什么我觉得整体效率(不仅仅是数据从DB到PHP返回给用户的速度有多快,还有代码的可维护性/重构性)在底层的代码会更好。

SQL注入;当您一次发出多个语句时,被黑客攻击更容易。所以,不要这样做。

如果您确实经常需要它,那么编写一个存储过程来通过一个CALL语句执行所有步骤。这将返回多个"rowsets",因此需要类似的代码。