2013-08-02 32 views
0

我的社区网站将通过注册表格,将有三个列表框的地块,楼面数和门数采取居民登记。指数/重点领域到另一列

我的第一个问题是 - 因为我需要找回公寓数量对于某些操作,将存储在三个字段在三个不同的列放慢的数据/报告的检索?难道是一个更好的主意,另一个字段添加到存储连接的值,并使用检索表?我的第二个问题是:如果我要走级联路线,是否在发送到数据库之前将它们连接起来(在处理php中),还是将表中的列设置为它会影响结果采取了表中的三个值,并执行concat?

编辑

基础上的反应,一点解释可能会在此处添加值:

我的表单/表是为各成员的意见和建议。查询表格可能是:

  1. 由会员检查他们的投诉状态。每天可能会有20个这样的电话 - 很少会超过这个。
  2. 由管理员呼叫从管理页面的报告 - 这可能是未答复的投诉,解决投诉,发送感谢意见的建议,等等。这也可能意味着得到未解决的投诉每块等
  3. 由管理员当他回复该成员时 - 这会调用记录的更新。
  4. 成员提供的新的投诉或建议发送。

因此,有效地,查询可以通过单个公寓号码或区块名称来查询。我已经有分别采用三栏S和因为它涉及到一个记录检索这不是一个问题,一检查投诉的地位形式。比方说,如果有三十条记录会出现在B-block报告中呢?还是一百?在这种情况下,检索连接会成为问题吗?

+0

有三个字段,然后与这三个字段组合的数据相同的另一个字段只是复制数据。根据需要连接它们。 – ironcito

+0

速度真的不应该是一个单一的注册问题...我会根据我最喜欢的代码在哪里选择连接的位置;) – kwishnu

+0

我认为这将是一个偏好问题。我个人而言,公寓号码可能值得额外的数据库专栏。根据您如何查询数据库中的信息以及将哪些字段标记为索引,存储不应放慢速度。 – Crackertastic

回答

0

Q将存储三个不同列中的三个字段减慢数据/报告的检索速度?

A不,它不会减慢检索速度,只要数据类型合适即可。 (使用int或VARCHAR,而不是长长的CHAR。如果这是您更容易对付,当你找回它们并置的值,然后做检索的连接。

SELECT CONCAT(t.block,'|',t.floor_number,'|',t.door_number) AS apartment_number 

这不会延缓任何东西了。

在另一方面,如果你没有必要EVER查询或更新这些个别领域,你将永远地处理它刚刚apartment_number ...那么你可以只为apartment_number创建列。

在哪里如果你需要从apartment_number中解析出单个字段,性能将会下降E,如果你需要检索行,其中的门数分量是偶数,或所在楼层数大于1 ...这就是当事情进展放缓。

我会将它们存储为独立的字段,因此如果需要的话我可以访问各个组件。例如,我可以回答这样的问题,如第3块第2层有多少个门号?