SQL操作性能:列号,SUM

时间:2012-07-16 14:58:30

标签: mysql

我正在开发一个让人们回答问题的应用程序,它已经在不同的列中存储了正确和错误问题的数量。对于其他功能(例如所有时间分数),我需要获得每天所回答的总金额,等等。

所以,最好是: 1.对于每个问题的答案,存储到DB:answer_correct,answer_incorrect和answers_total

OR

  1. 每个答案都存储到DB:answer_correct,answer_incorrect,
  2. 在进行排名功能时,请让那时的数据库为SUM吗?
  3. 我知道这看起来很通用但随着我对MySQL的深入研究,我正在尝试开发最佳实践:性能。

    谢谢!

1 个答案:

答案 0 :(得分:0)

我建议采用以下结构:

CREATE TABLE IF NOT EXISTS `answers` (
  `userId` int(11) NOT NULL,
  `questionId` int(11) NOT NULL,
  `isCorrect` tinyint(3) unsigned NOT NULL,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`userId`,`questionId`),
  KEY `isCorrect` (`isCorrect`),
  KEY `time` (`time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

在每个答案中,您都会在此表中添加记录。如果需要,您可以在此表中的给定时间段内获得正确/错误答案的数量。

..我不知道是否允许用户多次回答一个问题,请注意主要索引。