PHP-MySQL优化:在查询内部还是外部执行数学运算?
作者:互联网
我有一种强烈的感觉,查询本身不需要的所有数学运算都应该在查询之外执行.例如:
$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>;
}
vs:
$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>;
}
第二种选择通常会更好,特别是对于复杂的表连接&这样.这是我的怀疑,我只是缺乏确认. . .
解决方法:
我的感觉是,在给定查询设置的情况下,从长远来看,在数据库中进行数学运算会稍微提高效率.对于选择的a,b,c版本,PHP必须创建3个元素,并为提取的每一行填充它们.
在数据库内版本中,仅创建了2个元素,因此将创建时间减少了33%.无论哪种方式,都必须进行计算,因此节省的方式并不多.
现在,如果您确实需要将b和c值公开给您的代码,那么在数据库中进行计算就没有意义了,您需要在结果集中添加更多字段并进行相应的创建/处理/填充开销.
无论如何,您都应该对两个版本进行基准测试.在一种情况下有效的情况可能比在另一种情况下无用的情况更糟,只有一些测试才能证明哪种情况更好.
标签:query-optimization,mysql,php 来源: https://codeday.me/bug/20191208/2093136.html