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