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

mysql:15321

From: Masuda <Masuda <masuken@xxxxxxxxxx>>
Date: Wed, 2 Jun 2010 10:17:04 +0900
Subject: [mysql 15321] フィールド数とレコード数のパフォーマンス差について

増田と申します。お世話になっております。

現在、php+mysqlでアプリケーションを作っているのですが、
テーブルを用意する際に、以下のどちらの方法がパフォーマンス的に望ましいのか
伺いたく思い、投稿させていただきました。

状況(仮):
ユーザ10名
うち3名は2つのアクション
残りは1つのアクションのみ
ユーザは毎日アクションを行うことができ、10日間アクションができるとする

この場合に、

--------------
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

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

->   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: フィールド数とレコード数のパフォーマンス差について