我将运动夹具存放在mysql数据库中。在Presnt我有大约20,000条记录,其中大约3000个是当前的灯具(今年)。我将需要定期访问,读取和更新当前的灯具,旧的灯具我只需要定期访问。
所以我的计划是将当前的图片放入一个表格中,然后将当前的图片保存在另一个表格中:
fixtures_histroic fixture_current
这是一个好的做法,我的理论是,当只有3,000个可能的结果时,我不想拖网浏览20,000条记录。然后,当新的一年或一年开始时,我可以将当前的灯具复制到历史表中并开始新的电流。
这在实践中听起来不错,我的下一个问题是如何在两个表中搜索数据。我知道如何进行简单的连接,但考虑这个查询,我将如何查询matches_current
和matches_histroic
。查询已经是initself一个连接,所以它是一个连接的连接。看起来可能会变得非常混乱?
SELECT `m`.*, `h`.`name` AS "homeTeam", `a`.`name` AS "awayTeam", `o`.*
FROM `matches_current` m
JOIN `teams` `h` ON `m`.`home_team_id`=`h`.`team_id`
JOIN `teams` `a` ON `m`.`away_team_id`=`a`.`team_id`
JOIN `outcomes` `o` ON `m`.`score_id`=`o`.`outcome_id`
WHERE `home_team_id`=1 AND `away_team_id`=2
AND `m`.`score_id`>0
ORDER BY `date` DESC
我正在做的是正确的,还是应该将所有20,000条记录放在一张表中?
提前谢谢你,
艾伦。
答案 0 :(得分:1)
糟糕的想法。 20,000条记录不是很多。您可以通过对数据采用合适的索引方案来执行您想要的操作。而且,在多个表中拆分相同的数据会给维护,安全性,备份和数据完整性带来问题。
如果记录大小非常大,那么在如此少量的记录中执行此操作的唯一原因是。因此,即使记录是10,000字节,那么表占用的总空间也只有200 MB - 按数据库标准来说仍然很小。
如果您有更多行并且想要处理这种情况,我建议对表进行分区而不是创建另一个表。
答案 1 :(得分:0)
关于您的“第一个”问题,将“历史”和“当前”数据分开:
考虑到你的行数如此之少,我认为这不会有任何有益的影响。相反,这将使事情变得更加复杂......