两个查询vs选择全部

时间:2014-05-27 09:43:28

标签: php mysql sql

我正在使用Mysql和php。

这是我的表结构:=

+----+---------------+--------+--------+--------+--------+--------+--------+
| id | no_of_replies | reply1 | reply2 | reply3 | reply4 | reply5 | reply6 |
+----+---------------+--------+--------+--------+--------+--------+--------+
| -- | --            |        | --     | --     | --     | --     | --     |
+----+---------------+--------+--------+--------+--------+--------+--------+

用户可以为一个问题提供最多六个回复。大多数时间用户给出4-5个回复.i存储回复数量(no_of_replies)和所有回复(reply1,reply2,...) 。 回复5和回复6大多是NULL。

所以在显示数据时我有2个选项。

选项1: - 进行单一查询并获得所有回复 -

SELECT * FROM `responses` WHERE `id`='xyz'

选项2: - 做2个查询并得到必要的回复。

SELECT `no_of_repies` FROM `responses` WHERE `id`='xyz'

如果结果为3

SELECT reply1reply2reply3 FROM responses WHERE id =' XYZ'

注意:= 我问这个是因为这个表会经常使用,需要快速回复。

1 个答案:

答案 0 :(得分:2)

您应该阅读有关数据库规范化的内容。在您的情况下,我会这样做:

tabel
---------------------------------
id    reply     date   questinID

获取1个问题的1个人的回复数量

SELECT COUNT(*) FROM tabel WHERE id=userid AND questionID=questionid;

获取1个用户的1个问题的回复:

SELECT * FROM tabel WHERE id=userid AND questionID=questinid ORDER BY date;