Php 将三个字段或concat()字段的索引/键输入另一列
我的社区网站将通过登记表接受居民的登记,登记表上有三个列表框,分别是街区号、楼层号和门牌号 我的第一个问题是——由于我需要为某些操作检索公寓号,将这三个字段存储在三个不同的列中是否会降低数据/报表的检索速度?将另一个字段添加到存储连接值的表中并使用该字段进行检索是否更好 我的第二个问题是:如果我要走连接路线,是在发送到数据库(在处理php中)之前连接它们,还是在表中设置列,使其接受表中的三个值并执行连接,会有区别吗 编辑 根据回答,这里的一些解释可能会增加价值: 我的表格是供议员提出意见和建议的。查询表可以是:Php 将三个字段或concat()字段的索引/键输入另一列,php,mysql,indexing,primary-key,concat,Php,Mysql,Indexing,Primary Key,Concat,我的社区网站将通过登记表接受居民的登记,登记表上有三个列表框,分别是街区号、楼层号和门牌号 我的第一个问题是——由于我需要为某些操作检索公寓号,将这三个字段存储在三个不同的列中是否会降低数据/报表的检索速度?将另一个字段添加到存储连接值的表中并使用该字段进行检索是否更好 我的第二个问题是:如果我要走连接路线,是在发送到数据库(在处理php中)之前连接它们,还是在表中设置列,使其接受表中的三个值并执行连接,会有区别吗 编辑 根据回答,这里的一些解释可能会增加价值: 我的表格是供议员提出意见和建议的
因此,有效地,可以通过单个公寓号码或街区名称进行查询。我已经有了一个检查投诉状态表,它分别使用了三列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语句)时,您会看到速度变慢。这是因为需要更新索引文件,并且根据您的数据库大小,这可能需要比预期更多的时间。