我有一个投票脚本,它将post_id和user_id存储在一个表中,以确定某个特定用户是否已经对某个post进行了投票,并在将来禁止它们。
为此,我将执行以下3个查询。
SELECT user_id, post_id from votes_table where postid=? AND user_id=?
如果没有返回行,则:
UPDATE post_table set votecount = votecount-1 where post_id = ?
然后
SELECT votecount from post where post_id=?
在网页上显示新的votecount
有更好的办法吗?3个查询严重降低了用户的投票体验
编辑
在投票表中,投票ID是主键
在post表中,post_id是主键。
有没有其他加快速度的建议?
最佳答案
您可以合并前两个查询:
UPDATE post
SET votecount = votecount - 1
WHERE post_id = ?
AND post_id NOT IN
(
SELECT post_id
FROM votes_table
WHERE user_id = ?
)
你还需要运行第三个。
确保您有一个唯一的索引或
PRIMARY KEY
上的votes_table (user_id, post_id)
和post (post_id)
。最有可能的是,您当前的查询速度慢是由于缺少这些索引造成的。