Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将三个字段或concat()字段的索引/键输入另一列_Php_Mysql_Indexing_Primary Key_Concat - Fatal编程技术网

Php 将三个字段或concat()字段的索引/键输入另一列

Php 将三个字段或concat()字段的索引/键输入另一列,php,mysql,indexing,primary-key,concat,Php,Mysql,Indexing,Primary Key,Concat,我的社区网站将通过登记表接受居民的登记,登记表上有三个列表框,分别是街区号、楼层号和门牌号 我的第一个问题是——由于我需要为某些操作检索公寓号,将这三个字段存储在三个不同的列中是否会降低数据/报表的检索速度?将另一个字段添加到存储连接值的表中并使用该字段进行检索是否更好 我的第二个问题是:如果我要走连接路线,是在发送到数据库(在处理php中)之前连接它们,还是在表中设置列,使其接受表中的三个值并执行连接,会有区别吗 编辑 根据回答,这里的一些解释可能会增加价值: 我的表格是供议员提出意见和建议的

我的社区网站将通过登记表接受居民的登记,登记表上有三个列表框,分别是街区号、楼层号和门牌号

我的第一个问题是——由于我需要为某些操作检索公寓号,将这三个字段存储在三个不同的列中是否会降低数据/报表的检索速度?将另一个字段添加到存储连接值的表中并使用该字段进行检索是否更好

我的第二个问题是:如果我要走连接路线,是在发送到数据库(在处理php中)之前连接它们,还是在表中设置列,使其接受表中的三个值并执行连接,会有区别吗

编辑

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

我的表格是供议员提出意见和建议的。查询表可以是:

  • 由成员检查其投诉的状态。每天可能有20个这样的电话——很少超过这个
  • 由管理员从管理员页面调用报告-这可能是未答复的投诉、已解决的投诉、发送建议感谢信等。这也可能意味着每个街区收到未解决的投诉等
  • 由管理员在回复成员时执行-这将调用对记录的更新
  • 成员发送新的投诉或建议

  • 因此,有效地,可以通过单个公寓号码或街区名称进行查询。我已经有了一个检查投诉状态表,它分别使用了三列s,这不是问题,因为它涉及检索单个记录。如果,比如说,有30条记录会出现在一个B区报告中呢?还是一百?在这种情况下,检索时的连接是否会成为问题?

    Q将三个字段存储在三个不同的列中是否会降低数据/报表的检索速度

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

    SELECT CONCAT(t.block,'|',t.floor_number,'|',t.door_number) AS apartment_number
    
    这不会让任何事情变慢

    另一方面,如果您不需要查询或更新这些单独的字段,并且总是将其作为公寓号码来处理……那么您可以为公寓号码创建一列

    性能下降的原因是您是否需要从公寓编号中解析各个字段。例如,如果您需要检索门编号组件为偶数的行,或者楼层编号大于1的行,则速度将下降


    我会将它们存储为单独的字段,以便在需要时可以访问各个组件。例如,我可以回答这样的问题:3号楼2层有多少门牌?

    有三个字段,然后另一个字段的数据与这三个字段的数据组合相同,这只是复制数据。根据需要将它们连接起来。速度真的不应该是一个单一注册的问题…我会根据我最喜欢的编码位置选择连接的位置;)我认为这将是一个偏好的问题。就我个人而言,一个公寓号码可能值一个额外的数据库列。存储速度不应该减慢,这取决于您从数据库查询信息的方式以及哪些字段标记为索引。根据您编辑的响应,简短的回答是“否”-您不应该看到任何减慢。索引单个行将有助于查询信息。当您在大批量中进行修改(例如INSERT和UPDATE语句)时,您会看到速度变慢。这是因为需要更新索引文件,并且根据您的数据库大小,这可能需要比预期更多的时间。