mysql:15323
From: らっちょ らっちょ <らっちょ らっちょ <zon1966@xxxxxxxxxx>>
Date: Wed, 2 Jun 2010 07:31:26 +0000
Subject: [mysql 15323] Re: フィールド数とレコード数のパフォーマンス差について
増田さん、こんにちは らっちょと申します。 私も駆け出しなのですが、普段 CentOS5.3 & MySQL5.1.41 & PHP5.3.1 Server cpu:Opteron1352 memory:8G の環境で動かしております。 最大レコード数は約240万ですが、快適に作動しております。 さて、お問合せの件ですが > 一ヶ月目で、130ぐらいレコード数が増えます。 > これを1000ヶ月とか10000ヶ月になった場合、膨大なレコード数になり、パフォーマンスが落ちないか心配な面があります。 ミヤタさんも仰っていますが、1000ヶ月で13万、10000ヶ月(約833年)で130万レコードと あまり多くはないように思います。 パフォーマンスの心配はしなくても大丈夫だと思います。 (古いPCでスペックが低すぎると分かりませんが) それより気になったのは、 ・その月のaction回数を調べて今回可能か判断する場合 table1)カラムを順に調べて空きがあればactionへ table2)その月の件数を調べて10未満ならactionへ が必要と思われますが、table2の方が楽だと思います。 ・なんらかの集計をされますでしょうか 月に10回未満が許されるのなら個人別action状況 行為日が特定でなければ、日別のaction数 とか 集計されるのならtable2でないと大変のような気がします。 以上少しでもお役に立てればと思い、レスいたします。 #MySQL(データベース)で、楽&幸になる人が増えることを願ってます > -------------- > table1 > > key | user_id | 1day_action1 | 2day_action1 .... 10day_action1 | > 1day_action2 | .... 10day_action2 > > とすべきか、 > > > table2 > > key | user_id | action | day > > とすべきかで迷っております。 > > table1であれば、一度user_idなどをINSERTしてしまえば、action部分をUPDATEするだけ(NOT > NULL制約有)なので、フィールドもそこまで増えず、ある意味見やすいです。 > ただし、アクションを2つ行えるのは3名しかいないため、残り7名にとっては無駄なフィールドがあって、 > あまり効率よくない感じがします。 > > table2だと、フィールドも少なく、actionの内容とその行為日だけを入れればよいので、 > 楽なのですが、INSERTが多くなり、レコード数も必然と増えます。 > > ただし、フィールドに無駄はありませんし、WHERE句を使えばデータは取ってこれるので、 > 1レコードとしては見にくいですが、データを素早く取ってこれることが大事なので、 > こちらのほうがよいのかなと思っています。 > > --- > > ただし、行為の対象として、targetフィールドを設けなければならなくなったり、 > 10日間を複数回繰り返すことができるようになり、1ヶ月目(10日間)、2ヶ月目(10日間)というように > 増えて言った場合、table2だと、 > > key | month | user_id | action | target | day > となり、1monthで1user、10action(3人は20action)ですので、 > 一ヶ月目で、130ぐらいレコード数が増えます。 > > これを1000ヶ月とか10000ヶ月になった場合、膨大なレコード数になり、パフォーマンスが落ちないか心配な面があります。 > > table1だと、 > > > key | month | user_id | 1day_action1 | 2day_action1 .... 10day_action1 > | 1day_action2 | .... 10day_action2 > target > として、アクションフィールドのデータにその行為のターゲットを入れればデータは取れるので、 > レコード数もあまり増えず、無駄なフィールドはあるものの、こちらのほうがよいのだろうかとも思ってしまいます。 > > > この場合、どちらのほうがパフォーマンスとして望ましいのでしょうか? > データが多くなれば検証もできるのですが、現在データが少なく、比較できるほど大きなデータも持っていないため、もし何か分かりましたらご教授いただけると嬉しく思います。 > > > > 増田 > -- > mailto:masuken@xxxxxxxxxx _________________________________________________________________ USBメモリ代わりにお使いください。無料で使える25GB。 http://skydrive.live.com/?showunauth=1&mcid=HomeliveMerchBox1
15321 2010-06-02 10:17 [Masuda <masuken@xxxx] フィールド数とレコード数のパフォーマンス差について 15322 2010-06-02 12:35 ┣[Miyata Masaki <catlo] 15325 2010-06-03 13:06 ┃┗[Masuda <masuken@xxxx] Re: [mysql 15322] Re: フィールド数とレコード数のパフォーマンス差について -> @ 15323 2010-06-02 16:31 ┗[らっちょ らっちょ <z] 15324 2010-06-02 18:57 ┣[岩崎 誠司 <iwasaki_] 15327 2010-06-03 13:37 ┃┗[Masuda <masuken@xxxx] Re: [mysql 15324] Re: フィールド数とレコード数のパフォーマンス差について 15326 2010-06-03 13:29 ┗[Masuda <masuken@xxxx] Re: [mysql 15323] Re: フィールド数とレコード数のパフォーマンス差について