【发布时间】:2009-06-03 18:00:35
【问题描述】:
我需要从表中提取几行并以两种方式处理它们:
- 在一个键上聚合
- 逐行,按相同键排序
表格大致如下:
table (
key,
string_data,
numeric_data
)
所以我正在研究我正在编写的函数的两种方法。
第一个会通过一个查询拉取聚合数据,然后在循环内再次查询每组逐行数据(以下是类似 PHP 的伪代码):
$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>
}
在此应用程序中,性能不是实际问题;我只是想编写合理且可维护的代码。
我喜欢第一个选项,因为它更模块化——我喜欢第二个选项,因为它看起来结构简单。是一种选择比另一种更好,还是真的只是风格问题?
【问题讨论】:
标签: php sql design-patterns