mysql:8857
From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Mon, 23 Feb 2004 02:03:52 +0900
Subject: [mysql 08857] Re:
こんにちは。 "katayose" <katayose@xxxxxxxxxx>さんの <007101c3f913$245745e0$937ba8c0@katayose> "[mysql 08855] Re: " > 初めまして、今月メンバーに参加しました。片寄と申します。 > > 問題を整理してみました。 > この整理が近藤のものと合致しているかわかりませんが、こう仮定したらということ > で > 解決策を考えてみました。 <snip> 片寄さんの解決方針は、(3)で時間毎(24発)、送信と受信(2発)で合計48発の クエリを発行する事になります(正確には(2)のテーブル削除とテーブル作成のク エリ、結果を得るクエリの合計3発を含め51発ですが)。これはボクが[mysql 08847]の「しかし、 24*2=48発のクエリを出して、は少々問題があるでしょう」 と述べたやり方ですね。 もちろん、この方法で目的を果たす事は可能なのです。しかし「少々問題があ るでしょう」の通り、あまり良い方法とは言えません。mail_tb(とmaster_tb)が どれだけのレコードを持っているのか定かではありませんが、数が多い場合には DBMSに多大な負担を掛ける事になります。mail_tbが1万のレコードを持ってい るとすれば、合計 48万レコードを (インデックスが張ってあれば48万のインデッ クスを)舐める事になります。 と言う事で、「TRANSFORM文が使えないのであれば、この様な処理はDBMSを使 っている処理系に任せてしまった方が好結果を生む」が[mysql 08847]の趣旨で すし、その後のもりきゅうさんの[mysql 08849]、[mysql 08852]での解法でしょ う。 また別の解法としては、集計結果そのままのテーブルをあらかじめ作成して置 き、 mail_tbにレコードを追加する際に、その集計結果テーブルを更新する、が あります。この時点では、日付、時間、送信者と受信者(とその所属グループ) は確定している訳ですから、行追加クエリ(挿入失敗は無視)と送受信カウントの 更新クエリの単純な2発を余計に出すだけです。 利点は処理が時間的に分散される、集計結果を得るのに集計結果テーブルへの 軽いクエリ1発で済む、です。他方難点としては、何らかの原因で集計結果に誤 りがあった場合には集計結果テーブルの再作成が必要で、その用意が工数的に不 利となるだろう、があります。 # [mysql 08847]での「[mysql08841]で沼田さんが示された方法位しか無いです # ね」は、少々勘違いでした。反省。 松枝知直 <tomom@xxxxxxxxxx> http://www.argus.ne.jp/~tomom/
8833 2004-02-20 17:48 [<lavlav@xxxxxxxxxx> ] 8834 2004-02-20 17:55 ┣[<lavlav@xxxxxxxxxx> ] Re: SQL 文について 8836 2004-02-20 18:09 ┣[遠藤 俊裕 <endo_t@xx] 8839 2004-02-20 18:40 ┃┗[<lavlav@xxxxxxxxxx> ] 8841 2004-02-20 20:23 ┃ ┣[<numata@xxxxxxxxxx> ] 8844 2004-02-21 04:51 ┃ ┣[Kazuhiro Yoshida <mo] 8846 2004-02-21 14:24 ┃ ┃┗[<konet218@xxxxxxxxxx] 8849 2004-02-21 17:59 ┃ ┃ ┣[Kazuhiro Yoshida <mo] 8850 2004-02-21 18:38 ┃ ┃ ┃┗[<konet218@xxxxxxxxxx] 8852 2004-02-22 02:22 ┃ ┃ ┃ ┗[Kazuhiro Yoshida <mo] 8855 2004-02-22 16:11 ┃ ┃ ┗["katayose" <katayose] -> 8857 2004-02-23 02:03 ┃ ┃ ┗[ML account <ml@xxxxx] 8847 2004-02-21 15:16 ┃ ┗[ML account <ml@xxxxx] 8848 2004-02-21 17:18 ┃ ┗[<konet218@xxxxxxxxxx] 8838 2004-02-20 18:15 ┗[Shingo Yamagai <yama] Re: SQL 文について