gpt4 book ai didi

php - PHP 中的内爆与 MySQL 中的内爆 - 哪个使用更少的 cpu?

转载 作者:可可西里 更新时间:2023-11-01 07:21:11 27 4
gpt4 key购买 nike

以下哪个选项更理想?

在 MySQL 中崩溃

$rsFriends = $cnn->Execute('SELECT CAST(GROUP_CONCAT(id_friend) AS CHAR) AS friends 
FROM table_friend
WHERE id_user = '.q($_SESSION['id_user']));
$friends = $rsFriends->fields['friends'];
echo $friends;

对比

在 PHP 中崩溃

$rsFriends = $cnn->Execute('SELECT id_friend 
FROM table_friend
WHERE id_user = '.q($_SESSION['id_user']));
while(!$rsFriends->EOF) {
$friends[] = $rsFriends->fields['id_friend'];
$rsFriends->MoveNext();
}
echo implode(',',$friends);

最佳答案

您可能应该知道正确(“最佳”)选择将成为许多变量的一个因素:

  1. 您的数据库和应用程序硬件。
  2. 数据的大小
  3. 数据库和应用服务器上的负载情况。
  4. 索引和其他可能影响数据集查询执行计划的东西
  5. 实际上想要如何使用数据。
  6. 应用服务器和数据库服务器之间的网络延迟

但您绝对可以分析程序流程来帮助您得出答案:

在 PHP 中崩溃:

  1. 执行选择查询返回所有 friend ID
  2. 将每个 ID 返回到您的应用程序。
  3. 在从结果中读取字符串时用 PHP 构建字符串。

优点:

  • 如果您确实需要原始 ID,则可以灵活使用它们(意思是——如果您在 MySQL 中创建字符串,但在 PHP 中对其进行后处理,昂贵的后处理操作可能会抵消在字符串编译阶段)
  • ID 可以(是?)作为数字而不是字符串返回到您的应用程序(1234567890 是 10 个字节的 ASCII,4 个字节作为 32 位整数)

在 MySQL 中崩溃:

  1. 执行聚合查询
  2. 在聚合结果时构建一个字符串
  3. 向您的应用程序返回一个字符串
  4. 输出那个字符串

优点:

  • 可能会在数据库服务器上为大型数据集使用更少的内存
  • 想不到别的了。只要您只需要一个大的串联字符串以外的任何东西,此解决方案就绝对不是最佳选择。

关于php - PHP 中的内爆与 MySQL 中的内爆 - 哪个使用更少的 cpu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5957389/

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