看板 Soft_Job 關於我們 聯絡資訊
※ 引述《TonyQ (沉默是金。)》之銘言: : $result=$db->query("select * from books"); : while($result->moveNext()){ : $bookSum = : $db -> queryf( : "select sum(sell_count) as cnt : from books_sell : where bookId='%s';", : $result->row("id")); : echo "<tr><td>".$result->row("name")."</td>". : "<td>".$bookSum->row("cnt")."</td></tr>"; : $bookSum->close(); : } : $result->close(); : 為了一些不必要爭議,所以這是用我自己的方式重新詮釋過的結果。 : 該報表資料量有幾萬筆,這個for迴圈跑一次要2 hr ...... 回推文,雖然我沒寫過C++,不過可以一個SQL做掉的東西這家伙撈出來搞就是耍笨。 SELECT bookId, sum(sell_count) FROM books_sell GROUP BY bookId 這樣一條就做好了,根本不需要While 迴圈。 如果需要BOOK的資訊,改成Sub Query跟book join就可以把Book的欄位加進來,直接 存成View 來用會更方便。 就算是這樣,沒有分段抓(paging),一次撈整個Table也還是很笨。 -- 我所信仰的科學是一種謙卑的理性,承認自身的無知與渺小才能觀察到世界在我們貧 弱的知覺上留下來的痕跡。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.194.186.232
dryman:不是C++是Perl啦XD 沒用SQL的話不是就跟txt檔沒兩樣... 05/15 10:24
poga:....是php吧- - 05/15 10:26
poga:不過這不是重點... 05/15 10:27
bobhsiao:PHP 跟 Perl 長得好像我也分不清楚 05/15 10:28
ilovebbs:以前不知道SQL可以這樣做,我也是這樣做.XD 05/15 12:46
dryman:沒寫過PHP :P query裡面的我都沒看過:P 05/15 13:24
xsoho:真驚訝 雖然我也看不懂 只是推文的好像滿多搞不清楚 XD 05/15 15:32
TonyQ:yeh, this is what i do . 不過沒paging 是因為這是統計報表 05/15 15:59
TonyQ:所以撈全部資料進來是可以理解,不過當時是採用小表cache, 05/15 16:00
TonyQ:大表寫view的原則去作簡化。XD 05/15 16:00
shoda:我認為這個解答的合理假設前提應該註明一下比較好 05/15 17:25
TonyQ:只是閒聊咩 別這麼認真 XD 05/15 19:06
zanyking:這時候就要算資料成長速度了,5年不爆一般就沒差。 05/16 14:18