1.设计一个投票记录表,将用户投过的票id以 1||2||4||5 格式存放.如果参与了1000个投票,不知道这样会不会让字段体积过大?每次投票前取出,分割字符串,用数组循环检查,如果没有相等的值,则没有投过..用户投完一次更新一次记录字段
2.设计一个表,字段是 用户id,票id,用户每投一次就插入一条记录.可是这样如果有10000个人投了1000个票就有一千万条记录了,每次投票前都得扫描一遍,查询用户是否投过,会不会过慢?用户投完一次插入一条记录哪种方式合适??或者还有其他方案吗?谢谢PHP+mySQL
2.设计一个表,字段是 用户id,票id,用户每投一次就插入一条记录.可是这样如果有10000个人投了1000个票就有一千万条记录了,每次投票前都得扫描一遍,查询用户是否投过,会不会过慢?用户投完一次插入一条记录哪种方式合适??或者还有其他方案吗?谢谢PHP+mySQL
create table votelog (
uid int,
opt int,
vtime datetime,
v_ip varchar(30),
v_hostname varchar(30),
primary key (uid,opt)
)然后投票选择提交后,PHP检查一下表中是否有记录。或者直接提交,然后根据返回的错误是否为0判断是否插入成功。
为啥要设联合主键 primary key (uid,opt) 呢?那不是允许用户张三投A一次,再投B一次?
直接把uid设为UNIQUE INDEX就可以了。不过这样重名的用户就有人不能投票了
voteId做唯一键,且都分别建立索引
这个足以,每个用户每个投票只能有一个这样记录。当然,你要把投票日期啥的放进去也行。