标签:query-optimization mysql php
我有一种强烈的感觉,查询本身不需要的所有数学运算都应该在查询之外执行.例如:
$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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。