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

mysql:14106

From: hama <hama <smilestyle55@xxxxxxxxxx>>
Date: Tue, 10 Jul 2007 11:35:04 +0900
Subject: [mysql 14106] Re: ログのカウント方法

こんにちは☆

SQL文の実行が遅いな〜と感じたら、インデックスを使うと早くなる場合がありますね!

MySQL:インデックスまとめメモ
http://www.res-system.com/item/550
複合インデックス
http://dev.mysql.com/doc/refman/4.1/ja/multiple-column-indexes.html

検索が早くなるかな?(・∀・)

07/07/09 に Hisamitsu Issei<ds1i-hsmt@xxxxxxxxxx> さんは書きました:
>
> 久光です
>
>
>
>
> (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/
> =================================
>
>

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

     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]