[前][次][番号順一覧][スレッド一覧]

mysql:14104

From: "F.Y" <"F.Y" <fumi_sby@xxxxxxxxxx>>
Date: Mon, 9 Jul 2007 21:55:36 +0900 (JST)
Subject: [mysql 14104] Re: ログのカウント方法

3.23時代からずっと下記の書き方をしてるけど、遅いと思ったことはないぞ。
select 狩人, sum(if(標的 = '兎', 1, 0)), sum(if(標的 = '狐', 1, 0)
from 成果
group by 狩人
order by 狩人;

--- Hisamitsu Issei <ds1i-hsmt@xxxxxxxxxx> wrote:

> 久光です
> 
> 
> 
> > (2)count関数中にcase式を入れて、一度で複数の日付の範囲を 
> > 集計できるようにしま
> > す。
> 
> >  count(case when dt between '2007-03-01 00:00:00' and '2007-03-31
>  
> > 23:59:59' then 1 else null end) as a1,
> 
> > from material left join log_mate on material.id=log_mate.mate_id
> > and dt between '2007-1-31 0:0:0' and '2007-7-31 23:59:59' group
> by  
> > id,name order by id,name ;
> 
> 
> ・CASEを使って条件に合うものを別個に集計する方法
> ・FROMの中に日付の絞り込みも入れてしまう方法
> 
>  CASEはここで使えることが思いつかなかったです。言われてみ 
> れば使えま
> すねコレが。FROMにいたってはこんな形で絞り込む条件が入れら 
> れるとは知
> りませんでした。
> 
>  で、さっそく試してみたのですが、3時間ほど計算しても実行 
> 結果が返っ
> てこなかったです。SQL文が間違ってたのかと思い、あれやこれ 
> や試したん
> ですが全然実行結果が返ってこず。
>  ログファイルが大きすぎるのかもしれないと思って、79万行あ 
> るデータを
> 今年の6月30日〜7月1日の2日間だけの 
> 2600行に減らして、さらにSQL文を下
> 記のように単純にしたところ
> 
> SELECT
> material.id,
> COUNT(
> CASE WHEN log_mate.datetime
> BETWEEN '2007-06-30 00:00:00'
> AND '2007-06-30 23:59:59'
> THEN 1
> ELSE NULL
> END ) AS a1
> FROM material
> LEFT JOIN log_mate ON material.id = log_mate.mate_id
> AND test.datetime
> BETWEEN '2007-6-29 0:0:0'
> AND '2007-7-1 23:59:59'
> GROUP BY material.id
> ORDER BY material.id
> 
>  130秒くらいでようやく実行結果が返ってきました。結果は私 
> が欲しがっ
> ていたとおり、利用がなければ「0」が返ってくる部品一覧表に 
> なっていま
> した。すごいです。ありがとうございました。
> 
>  こんどの問題は実行時間が非常に長い点です。自分のパソコン 
> (CoreDuo
> 2GHz)の処理能力がひどく劣っているとも思えないし、でもSQL 
> 文はちゃん
> と動作することがわかったので、まずは気長に一晩くらい回しっぱなし 
> にし
> てみます。EXCELにペタペタ貼付けてエッサホッサと行のずれを 
> 揃える仕事
> を考えれば、一晩ほっといて結果一覧がでる方がかなり効率的なので。
> 
>  あとはSQL一発ってわけにはいかないけどテンポラリー・テー 
> ブルを組み
> 合わせる方法も現実的な速度でPHPを使わずに一覧表が作れるか 
> もしれない
> と考えてます。
> 
>  なんにせよおかげさまで進歩しました。ありがとうございます。
> 
> 
> =================================
> ==       HISAMITSU ISSEI       ==
> ==  DS1I-HSMT@xxxxxxxxxx  ==
> http://www.ne.jp/asahi/pro/his/
> =================================
> 
> 
> 


--------------------------------------
Easy + Joy + Powerful = Yahoo! Bookmarks x Toolbar
http://pr.mail.yahoo.co.jp/toolbar/


[前][次][番号順一覧][スレッド一覧]

     14100 2007-07-08 16:41 [Hisamitsu Issei <ds1] ログのカウント方法                      
     14101 2007-07-08 19:04 ┣["F.Y" <fumi_sby@xxxx]                                       
     14102 2007-07-08 21:14 ┗[忠犬 KEN公 <ken_ken_]                                       
   @ 14103 2007-07-09 21:19  ┗[Hisamitsu Issei <ds1]                                     
->   14104 2007-07-09 21:55   ┣["F.Y" <fumi_sby@xxxx]                                   
     14106 2007-07-10 11:35   ┗[hama <smilestyle55@x]