我正在使用MySQL作为我的数据库在php中构建一个wepage。
哪种方式更快?
使用后续查询向MySQL发出2个请求。
SELECT FROM FROM FROM;
SELECT sum(points)FROM data;
1请求MySQL。将结果保存在临时数组中,并在php中计算总和。
$ data = SELECT FROM FROM data;
编辑 - 数据大约200-500行
答案 0 :(得分:5)
这实际上取决于很多不同的因素。我建议尝试两种方法,看看哪一种更快。
答案 1 :(得分:3)
由于Phill和Kibbee已经非常有效地回答了这个问题,我想指出过早优化是Bad Thing(TM)。写下最简单的内容和个人资料,个人资料,个人资料。
答案 2 :(得分:2)
我们谈论了多少数据?我想说在大多数情况下,MySQL可能会更快地进行这类操作。
编辑:对于你所谈论的那种数据,它可能不会造成很大的不同。但是数据库倾向于针对那些类型的查询进行优化,而PHP则不然。我认为第二个数据库查询可能是值得的。
答案 3 :(得分:1)
如果您想在一行中执行此操作,请使用如下运行总计:
SET @ total = 0;
SELECT points,@ total:= @ total + points AS RunningTotal FROM data;
答案 4 :(得分:1)
在我遇到性能问题之前,我不担心。
答案 5 :(得分:1)
如果您使用两个单独的查询,则需要注意在获取行和数据之间数据发生变化的可能性。得到他们的总和。在出现可观察到的性能问题之前,我会坚持自己进行总结以保持页面的一致性。
答案 6 :(得分:0)
mySQL的效率的一般经验法则是尽量减少SQL请求的数量。每次调用数据库都会增加开销,并且在所需时间方面“昂贵”。
mySQL完成的优化非常好。它可以通过许多连接,嵌套和计算来处理非常复杂的请求,并使其高效运行。
但它只能优化个别请求。它无法检查两个不同SQL语句之间的关系并在它们之间进行优化。
在您的示例1中,这两个语句将向数据库发出两个请求,并且该表将被扫描两次。
您保存结果并自己计算总和的示例2将快于1.这只是一次数据库调用,并且循环遍历PHP中的数据以获得总和比第二次调用数据库更快
答案 7 :(得分:0)
只为了它的乐趣。
SELECT COUNT(points) FROM `data`
UNION
SELECT points FROM `data`
第一行是总数,下一行是数据。
注意:联盟可能很慢,但可以选择。
也可以做更多的乐趣,这支持你对行进行排序。
SELECT 'total' AS name, COUNT(points) FROM `data`
UNION
SELECT 'points' AS name, points FROM `data`
然后通过PHP选择
while($row = mysql_fetch_assoc($query))
{
if($row["data"] == "points")
{
echo $row["points"];
}
if($row["data"] == "total")
{
echo "Total is: ".$row["points"];
}
}
答案 8 :(得分:0)
您可以使用这样的联合:
(选择点,null作为数据的总和)union(选择null,从点到数据组的总和(点));
结果将如下所示:
point total 2 null 5 null ... null 7你可以弄清楚如何处理它。
答案 9 :(得分:-1)
以mySQL的方式做到这一点。让数据库管理器完成它的工作。 mySQL针对此类任务进行了优化