【发布时间】:2013-02-23 20:08:29
【问题描述】:
考虑一个人们对他们最喜欢的颜色投票赞成 (+1) 或反对 (-1) 的网站,我有两个表格:
一个列出人们可以投票的所有颜色,第二个表格记录每个人的投票、投票的颜色以及是 +1 还是 -1。
关于获取特定颜色的总票数,在颜色表上包含总分会更有效吗?当一个人投票时,会有一个插入语句和一个更新语句:
INSERT INTO votes (colour,vote) VALUES (red,-1);
UPDATE colours SET score=score-1 WHERE colour='red';
SELECT score FROM colours WHERE colour='red';
或者在进行投票时只使用一个 INSERT 语句,然后获取您的分数会更有效吗?
SELECT SUM(vote) AS score FROM votes WHERE colour='red';
我猜是什么时候有一个非常少量的投票,那么选项#2是最好的,但是当投票表非常大时,选择#1变得更好?
是否有一些工具可以用来根据表大小等对某些 SQL 查询进行排名?
【问题讨论】:
-
抱歉。忘了提到需要记录个人投票的表格,所以无论我采取什么选项,表格都需要在那里。
-
您希望您的桌子有多大? 将超过一个点,
SUM()会明显变慢。