Php 我想,使用自连接——但如果我们谈论的是可读性,就不确定这是正确的决定。“到数据库的往返次数越少越好。”但是,如果性能不是一个问题,为什么呢?因为这是一种很难习惯的做法。最好学会用“正确的方式”来做,这样当你在做一件事关绩效的事情时,你就不必忘记这些坏习惯。
Php 我想,使用自连接——但如果我们谈论的是可读性,就不确定这是正确的决定。“到数据库的往返次数越少越好。”但是,如果性能不是一个问题,为什么呢?因为这是一种很难习惯的做法。最好学会用“正确的方式”来做,这样当你在做一件事关绩效的事情时,你就不必忘记这些坏习惯。,php,sql,design-patterns,Php,Sql,Design Patterns,我想,使用自连接——但如果我们谈论的是可读性,就不确定这是正确的决定。“到数据库的往返次数越少越好。”但是,如果性能不是一个问题,为什么呢?因为这是一种很难习惯的做法。最好学会用“正确的方式”来做,这样当你在做一件事关绩效的事情时,你就不必忘记这些坏习惯。对不起,我说的“为什么”是指“为什么这是一种糟糕的做法”?您是否只是说,一般来说,最好以尊重性能的方式编写代码?或者,除了性能之外,还有其他原因为什么“到数据库的往返次数越少越好”?“。在某种程度上考虑性能问题?”是的。开始询问同事或在网上查看
我想,使用自连接——但如果我们谈论的是可读性,就不确定这是正确的决定。“到数据库的往返次数越少越好。”但是,如果性能不是一个问题,为什么呢?因为这是一种很难习惯的做法。最好学会用“正确的方式”来做,这样当你在做一件事关绩效的事情时,你就不必忘记这些坏习惯。对不起,我说的“为什么”是指“为什么这是一种糟糕的做法”?您是否只是说,一般来说,最好以尊重性能的方式编写代码?或者,除了性能之外,还有其他原因为什么“到数据库的往返次数越少越好”?“。在某种程度上考虑性能问题?”是的。开始询问同事或在网上查看web应用程序的性能-您几乎会普遍看到数据库是出现大量性能问题的地方。换句话说,当我说“性能不是一个问题”时,您的回答是“是的,它是”。我怀疑你是对的——这就是你所说的,对吗?你是在推荐一种方法还是另一种方法,还是你只是想进一步阐述一下优点和缺点?对不起,本,如果我不够清楚,在可读性和可维护性方面,我建议使用两个查询,我会重新表述答案。谢谢保罗。共识肯定是站在你这一边的,我确实采取了一种质疑的方式。想知道您是否可以提供更多关于“迭代循环,尽管数据杂乱难看”的背景资料。有什么论据?或者,如果我需要一场辩论,我会帮不上忙吗?;-)
table (
key,
string_data,
numeric_data
)
$rows = query(
"SELECT key,SUM(numeric_data)
FROM table
GROUP BY key"
);
foreach ($rows as $row) {
<process aggregate data in $row>
$key = $row['key'];
$row_by_row_data = handle_individual_rows($key);
}
function handle_individual_rows($key)
{
$rows = query(
"SELECT string_data
FROM table WHERE key=?",
$key
);
<process $rows one row at a time>
return $processed_data;
}
$rows = query(
"SELECT key, string_data, numeric_data
FROM table"
);
foreach ($rows as $row) {
<process rows individually and calculate aggregates as I go>
}
SELECT string_data, numeric_data, SUM(numeric_data) OVER (PARTITION BY key)
FROM table
SELECT key, string_data, numeric_data,
(
SELECT SUM(numeric_data)
FROM table ti
WHERE ti.key = to.key
) AS key_sum
FROM table to