私はソーシャルネットワークのウェブサイトに取り組んでいるので、ユーザーがたくさんいることを願っています。すべてのユーザーのタグ(キー|カウンター)を保存する必要があります。1)大きなテーブルと2)1つの非常に大きなテーブルと3)分割された大きなテーブルを使用する方がよいのではないかと思います。
1)これは多くのテーブル実装の例です
テーブルuserid_tags(すべてのユーザーが独自のテーブルを持っています)
key | counter
----- ---------
tag1 | 3
tag2 | 1
tag3 | 10
Query 1: SELECT * FROM userid_tags WHERE key='tag1'
Query 2: SELECT * FROM userid_tags
2)単一テーブルの実装:
テーブルタグ
key | counter | user_id
----- ------------------
tag1 | 3 | 20022
tag2 | 1 | 20022
tag2 | 10 | 31234
Query 1: SELECT * FROM userid_tags WHERE key='tag1' AND user_id='20022'
Query 2: SELECT * FROM userid_tags AND user_id='20022'
3)分割テーブルの実装
テーブル1000_tags(user_idは1から1000)
key | counter | user_id
----- ------------------
tag1 | 3 | 122
tag2 | 1 | 122
tag2 | 10 | 734
テーブル21000_tags(20000から21000までのuser_id)
key | counter | user_id
----- ------------------
tag1 | 3 | 20022
tag2 | 1 | 20022
tag2 | 10 | 20234
Query 1: SELECT * FROM userid_tags WHERE key='tag1' AND user_id='20022'
Query 2: SELECT * FROM userid_tags AND user_id='20022'
3)良い分割インデックスとは何ですか?私は本能に従って1000人(ユーザー)を使用しました