gpt4 book ai didi

php - MySQL优化: Perform Maths operation inside or outside of a query?

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

我有一种强烈的感觉,所有对查询本身不必要的数学运算都应该在查询之外执行。例如:

$result = mysql_query(SELECT a, a*b/c as score FROM table)
while ($row = mysql_fetch_assoc($result))
{
echo $row['a'].' score: '.$row['score'].<br>;
}

对比:

$result = mysql_query(SELECT a, b, c FROM table)
while ($row = mysql_fetch_assoc($result))
{
echo $row['a'].' score: '.$row['a']*$row['b']/$row['c'].<br>;
}

第二个选项通常会更好,尤其是对于复杂的表连接等。这是我的怀疑,我只是缺乏证实。 . .

最佳答案

更快取决于所涉及的机器,如果您谈论的是单个用户的更快。如果您谈论的是让 100 万用户更快地访问网站,那么用 PHP 进行这些计算会更有效。

运行 PHP 的网络服务器的负载很容易分布在大量机器上。这些机器可以并行运行,处理来自访客的请求并从数据库中获取必要的信息。然而,数据库并不容易并行运行。复制或分片等问题很复杂,可能需要专业软件和适当组织的数据才能正常运行。与向服务器阵列添加另一个 PHP 安装相比,这些是昂贵的解决方案。

正因为如此,数据库机器上 CPU 周期的值(value)远比网络服务器上的更有值(value)。因此,您应该在 CPU 周期更便宜且更容易并行化的网络服务器上执行这些数学函数。

这还假设数据库在执行计算时没有打开任何类型的数据锁。如果是这样,那么您不仅在使用宝贵的 CPU 周期,而且还在直接锁定来自其他用户的数据。

关于php - MySQL优化: Perform Maths operation inside or outside of a query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5172228/

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