gpt4 book ai didi

php - 什么更快 - 多个 PDO 查询或数组查询

转载 作者:行者123 更新时间:2023-11-29 14:03:28 32 4
gpt4 key购买 nike

我只是想知道数据库查询应该采用哪种方式。我最近开始在 mysql 中使用 PDO。我正在编写一个小脚本来检查制造商,然后根据每个制造商检查项目。我很困惑是否将项目放入数组中会更快(仅使用 1 个查询),然后当我循环制造商数组时使用 array_count_values 来获取项目数量或在循环中执行单独的查询来计算项目。我目前有大约400家制造商和70000种商品。

我当前使用数组的代码是:

$itemquery = $conn->query("SELECT manufacturer FROM item_info_short");
$itemquery->execute();
$itemrow = $itemquery->fetchall(PDO::FETCH_ASSOC);
foreach ($itemrow as $itkey => $itvalue) {
$items[] = $itvalue[manufacturer];
}
$it_qty = array_count_values($items);

然后是我的循环:

$manu_query = $conn->query("SELECT manufacturer FROM manufacturers ORDER BY manufacturer");
while($rowsx = $manu_query->fetch(PDO::FETCH_ASSOC)){
$rowid = $rowsx[manufacturer];
$count = $it_qty[$rowid];
if($count == '') $count = 0;
echo "<option value=\"$rowsx[manufacturer]\">$rowsx[manufacturer]&emsp;$count Items</option>";
}

如您所见,我总共使用了 2 个 PDO 查询。另一种方法将使用 401 查询。

我正在尝试了解哪种方法是最佳实践和/或更快。

预先感谢您的任何建议。

最佳答案

  1. 您的问题与 PDO 无关
  2. 您这样做的效率极低,但这与您提出的问题无关。
  3. 您要问的问题不是“哪个更快”,而是“哪个是正确的方法”。

要获取制造商及其商品的数量,您必须使用 SQL 来为您计算

SELECT manufacturer, count(*) cnt FROM item_info_short GROP BY manufacturer

将返回所有制造商及其 cargo 数量
如果您想获取制造商详细信息 - 将此查询与制造商表结合起来

如果您需要列出所有制造商及其商品 - 使用 LEFT JOIN
像这样的东西

SELECT m.manufacturer, count(i.manufacturer) cnt 
FROM manufacturers m LEFT JOIN item_info_short i
ON i.manufacturer = m.manufacturer GROUP BY m.manufacturer

关于php - 什么更快 - 多个 PDO 查询或数组查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730816/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com