我有一个投票脚本,它将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)
最有可能的是,您当前的查询速度慢是由于缺少这些索引造成的。

07-28 13:51