Ben bir tablo birkaç satır çekin ve iki şekilde bunları işlemek gerekir:
- Bir tuşun üzerinde toplanmış
- satır-by-satır, aynı anahtar sıralanması
Tablo kabaca şöyle:
table (
key,
string_data,
numeric_data
)
Bu yüzden ben yazıyorum işlevine iki yaklaşım bakıyorum.
İlk bir sorgu ile toplu veri çekme, ve sonra (şu PHP gibi pseudocode) satır-by-satır her veri kümesi için bir döngü içinde tekrar sorgulamak istiyorum:
$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;
}
Ya da, ben büyük bir sorgu yapmak ve kodu tüm çalışma yapalım ki:
$rows = query(
"SELECT key, string_data, numeric_data
FROM table"
);
foreach ($rows as $row) {
<process rows individually and calculate aggregates as I go>
}
Performans bu uygulamada pratik bir endişe değil; Ben sadece mantıklı ve sürdürülebilir kod yazmak için arıyorum.
Ben daha modüler çünkü ilk seçenek gibi - ve yapısal basit görünüyor çünkü ben ikinci seçeneği gibi. Bir seçenek diğerinden daha iyi olduğunu ya da gerçekten stil meselesi?