我在一个社交网络网站上工作,所以我希望用户会很多。我需要为每个用户保存标签(键 | 计数器),我想知道使用 1)大表与 2)一个非常大的表与 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(user_id 从 20000 到 21000)
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)什么是好的拆分索引的问题?我按照 instict 使用了 1000 个(用户)