首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >20,000+记录的MySQL设计理论

20,000+记录的MySQL设计理论
EN

Stack Overflow用户
提问于 2013-08-17 06:11:55
回答 2查看 608关注 0票数 0

我将运动器材存储在mysql数据库中。目前我有大约20,000条记录,其中大约有3000条是当前的固定装置(今年)。我需要定期访问、读取和更新当前的fixture,而我只需要定期访问较旧的fixture。

因此,我的计划是将当前的虚构放到一个表中,然后将当前的fixture保存在另一个表中:

fixtures_histroic fixture_current

这是一个很好的实践吗?我的理论是,当只有3000个可能的结果时,我不希望不得不在20,000个记录中查找。然后,当新的赛季或年份开始时,我可以将当前的固定装置复制到历史表中,并开始新的固定装置。

这一切在实践中听起来都很好,我的下一个问题是如何在两个表中搜索数据。我知道如何执行简单的连接,但是考虑这个查询,我如何查询matches_currentmatches_histroic。查询本身已经是一个连接,所以它应该是一个连接的连接。看起来可能会变得很混乱?

代码语言:javascript
复制
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条记录放在一个表中?

先谢谢你,

艾伦。

EN

回答 2

Stack Overflow用户

发布于 2013-08-17 06:22:41

糟糕的主意。20,000条记录不是很多。您可能可以在数据上使用合适的索引方案来做您想做的事情。而且,在多个表中拆分相同的数据会给维护、安全性、备份和数据完整性带来问题。

您要对如此少量的记录执行此操作的唯一原因是,如果记录大小过大。因此,即使记录是10,000字节,表占用的总空间也只有200MB --按照数据库标准,这仍然是很小的。

如果您有更多的行,并且想要处理这种情况,我建议对表进行分区,而不是创建另一个表。

票数 1
EN

Stack Overflow用户

发布于 2013-08-17 06:27:04

关于你的“第一个”问题,将“历史”和“当前”数据分开:

考虑到您的行数如此之少,我认为这不会有任何有益的影响。相反,这将使事情变得更加复杂……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18282885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档