我将运动器材存储在mysql数据库中。目前我有大约20,000条记录,其中大约有3000条是当前的固定装置(今年)。我需要定期访问、读取和更新当前的fixture,而我只需要定期访问较旧的fixture。
因此,我的计划是将当前的虚构放到一个表中,然后将当前的fixture保存在另一个表中:
fixtures_histroic fixture_current
这是一个很好的实践吗?我的理论是,当只有3000个可能的结果时,我不希望不得不在20,000个记录中查找。然后,当新的赛季或年份开始时,我可以将当前的固定装置复制到历史表中,并开始新的固定装置。
这一切在实践中听起来都很好,我的下一个问题是如何在两个表中搜索数据。我知道如何执行简单的连接,但是考虑这个查询,我如何查询matches_current和matches_histroic。查询本身已经是一个连接,所以它应该是一个连接的连接。看起来可能会变得很混乱?
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条记录放在一个表中?
先谢谢你,
艾伦。
发布于 2013-08-17 06:22:41
糟糕的主意。20,000条记录不是很多。您可能可以在数据上使用合适的索引方案来做您想做的事情。而且,在多个表中拆分相同的数据会给维护、安全性、备份和数据完整性带来问题。
您要对如此少量的记录执行此操作的唯一原因是,如果记录大小过大。因此,即使记录是10,000字节,表占用的总空间也只有200MB --按照数据库标准,这仍然是很小的。
如果您有更多的行,并且想要处理这种情况,我建议对表进行分区,而不是创建另一个表。
发布于 2013-08-17 06:27:04
关于你的“第一个”问题,将“历史”和“当前”数据分开:
考虑到您的行数如此之少,我认为这不会有任何有益的影响。相反,这将使事情变得更加复杂……
https://stackoverflow.com/questions/18282885
复制相似问题