0

我的社区网站将通过一个注册表接收居民的注册,该注册表将包含三个列表框,分别是街区、楼层号和门号。

我的第一个问题是 - 由于我需要为某些操作检索公寓号码,将三个字段存储在三个不同的列中会减慢数据/报告的检索速度吗?将另一个字段添加到存储连接值的表中并将其用于检索会更好吗?

我的第二个问题是:如果我要走连接路线,是否在发送到数据库之前连接它们(在处理 php 中)或者如果我在表中设置列以使其采用三个值,是否会有所不同在表中并执行连接?

编辑

根据回复,一些解释可能会在这里增加价值:

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

  1. 由会员检查他们的投诉状态。每天可能会有 20 个这样的电话——很少超过这个。
  2. 管理员从管理页面调用报告 - 这可能是未答复的投诉、已解决的投诉、发送感谢信以获取建议等。这也可能意味着每个块都收到未解决的投诉等。
  3. 管理员在回复成员时 - 这将调用对记录的更新。
  4. 会员提出新的投诉或建议。

因此,有效地,可以通过单个公寓号码或街区名称进行查询。我已经有一个 check-complaint-status 表单,它分别使用三个 column ,这不是问题,因为它涉及检索单个记录。例如,如果有 30 条记录会出现在 B-block 报告中怎么办?还是一百?在这种情况下,检索连接会成为问题吗?

4

1 回答 1

0

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

A不,只要数据类型合适,它就不会减慢检索速度。(使用 INT 或 VARCHAR,而不是较长的 CHAR。如果您在检索它们时更容易处理连接的值,那么在检索时进行连接。

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

这不会减慢任何速度。

另一方面,如果您不需要查询或更新这些单独的字段,并且您将始终将其视为公寓号码......那么您可以为公寓号码创建一个列。

如果您需要从 apartment_number 中解析出各个字段,性能会下降的地方。例如,如果您需要检索门号组件为偶数的行,或者楼层号大于 1 的行……那么事情就会变慢。

我会将它们存储为单独的字段,因此如果需要,我可以访问各个组件。例如,我可以回答诸如 3 号楼 2 楼有多少门号之类的问题?

于 2013-08-02T03:32:05.313 回答