记录数极多,而每条记录的信息量极少的数据库表该怎样重新设计?

transposon 2007-03-28 04:03:59
是用来做投票的,对一个条目每个用户都只能投一次票
本来可以设计一个表,有两个字段:itemId和userId,来存储用户的投票信息
但是如果有1万用户,每个用户投票100次,那这个表就会有100万的记录
这样越到后来,查询数据耗费的时间就会越长
请问,这样的情况数据库该怎样设计?
...全文
203 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jner 2007-03-29
  • 打赏
  • 举报
回复
建索引吧,我建了一个表,数据上千万时,建索引也能解决,要快一点的把内存加大吧
luoqun_ncs 2007-03-29
  • 打赏
  • 举报
回复
如果你只查少数几条记录,那么就索引解决。速度不是问题
如果你要整个表做统计,那么内存加大到可以把整个表缓存起来
gahade 2007-03-28
  • 打赏
  • 举报
回复
在80万记录的表上建了个索引试了一下,不用1秒可查出来.
字段40个左右.

楼上说将数据分开存,这样仍不可避免将多表联合查询.
transposon 2007-03-28
  • 打赏
  • 举报
回复
这样设计行不——
用3个字段:itemIds、insertDate和userId,
把一个用户每天投票的itemId拼起来存在itemIds里面
查询的时候 where userId = ? and itemIds like '% %'
不知道效率会怎样
CathySun118 2007-03-28
  • 打赏
  • 举报
回复
可以按时间段分表
transposon 2007-03-28
  • 打赏
  • 举报
回复
to libin_ftsafe(子陌红尘:当libin告别ftsafe):
还不知道什么是分区表,什么是历史表,呵呵
transposon 2007-03-28
  • 打赏
  • 举报
回复
to zlp321002(行走江湖,万事低调可保一路平安):
我还是想查询每个用户的投票,总的投票应该比较好实现

to gahade(我们了解历史时,我们已成为历史):
100万记录的情况下,加索引,2.4G的cpu,查询时间能控制在0.5秒内吗?
1000万记录呢?
子陌红尘 2007-03-28
  • 打赏
  • 举报
回复
使用分区表,或者建立历史表。
gahade 2007-03-28
  • 打赏
  • 举报
回复
如果一定要记录哪个用户投了哪些项目的票,这样的数据量可能无法避免.可以加索引提高查询速度.
zlp321002 2007-03-28
  • 打赏
  • 举报
回复
用事务+update 表 的值~~~能满足需要吗?(它不能查询出哪位用户投票情况,只满足总的投票情况)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧