作者zanyking (遥远的旅人)
看板Soft_Job
标题Re: [闲聊] 大家工作上看过哪些夸张的 CODE ?
时间Sat May 15 10:19:42 2010
※ 引述《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
1F:推 dryman:不是C++是Perl啦XD 没用SQL的话不是就跟txt档没两样... 05/15 10:24
2F:→ poga:....是php吧- - 05/15 10:26
3F:→ poga:不过这不是重点... 05/15 10:27
4F:推 bobhsiao:PHP 跟 Perl 长得好像我也分不清楚 05/15 10:28
5F:推 ilovebbs:以前不知道SQL可以这样做,我也是这样做.XD 05/15 12:46
6F:推 dryman:没写过PHP :P query里面的我都没看过:P 05/15 13:24
7F:推 xsoho:真惊讶 虽然我也看不懂 只是推文的好像满多搞不清楚 XD 05/15 15:32
8F:→ TonyQ:yeh, this is what i do . 不过没paging 是因为这是统计报表 05/15 15:59
9F:→ TonyQ:所以捞全部资料进来是可以理解,不过当时是采用小表cache, 05/15 16:00
10F:→ TonyQ:大表写view的原则去作简化。XD 05/15 16:00
11F:推 shoda:我认为这个解答的合理假设前提应该注明一下比较好 05/15 17:25
12F:→ TonyQ:只是闲聊咩 别这麽认真 XD 05/15 19:06
13F:→ zanyking:这时候就要算资料成长速度了,5年不爆一般就没差。 05/16 14:18