gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:39:30 24 4
gpt4 key购买 nike

我正在将体育赛事存储在 mysql 数据库中。目前我大约有 20,000 条记录,其中大约 3000 条是当前的赛程(今年)。我需要定期访问、读取和更新当前的灯具,我只需要定期访问旧的灯具。

所以我的计划是将当前的图片放入一个表中,然后将当前的夹具保留在另一个表中:

fixtures_histroic固定装置当前

这是一个好的做法吗?我的理论是,当只有 3,000 条可能的结果时,我不想遍历 20,000 条记录。然后,当新赛季或新一年开始时,我可以将当​​前赛程复制到历史表中并开始新的当前赛程。

这在实践中听起来不错,我的下一个问题是如何在两个表中搜索数据。我知道如何进行简单的联接,但考虑一下这个查询,我将如何查询 matches_currentmatches_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 条记录放入一个表中?

提前谢谢您,

艾伦。

最佳答案

糟糕的主意。 20,000条记录并不是很多。您可以通过对数据进行适当的索引方案来完成您想要的操作。而且,将相同的数据拆分到多个表中会给维护、安全、备份和数据完整性带来问题。

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

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

关于20,000+条记录的MySQL设计理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18282885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com