多个查询执行或一个查询和 nextRowset() 到 SELECT?
multiple query execution or one query and 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 个查询
- 单个查询及其交互可以很容易地移动到不同的功能,并且可以单独测试
这就是为什么我觉得整体效率(不仅仅是数据从数据库返回到 PHP 给用户的速度,还有 maintainability/refactoring 的代码)在底部。
"SQL 注入" 当您一次发出多个语句时,黑客更容易。所以,不要这样做。
如果您经常需要它,请编写一个存储过程,通过一个 CALL
语句执行所有步骤。这将 return 多个“行集”,因此需要类似的代码。
执行多个查询的效率是多少:
这与 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 个查询
- 单个查询及其交互可以很容易地移动到不同的功能,并且可以单独测试
这就是为什么我觉得整体效率(不仅仅是数据从数据库返回到 PHP 给用户的速度,还有 maintainability/refactoring 的代码)在底部。
"SQL 注入" 当您一次发出多个语句时,黑客更容易。所以,不要这样做。
如果您经常需要它,请编写一个存储过程,通过一个 CALL
语句执行所有步骤。这将 return 多个“行集”,因此需要类似的代码。