gpt4 book ai didi

php - MySQL分区高分表

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:00 24 4
gpt4 key购买 nike

我有一个存储游戏高分的表。这个游戏有很多级别,然后分数按分数 DESC(这是一个索引)排序,其中级别是级别 ID。在此级别 ID 列上进行分区会产生与创建许多单独的级别表(每个级别 ID 一个)相同的结果吗?我需要它以某种方式分离出关卡数据,因为我期待 10 的数百万条目。我听说分区可以加快这个过程,同时让我的表正常化。

另外,我的游戏中有未知数量的关卡(关卡可能随时添加或删除)。我可以指定在此级别 ID 列上进行分区,并在将新的(不同的级别 ID)添加到高分表时自动创建新分区吗?我可能从 10 个单独的级别开始,但最终达到 50 个,但我的所有数据仍然保存在一个表中,但有很多分区?我是否必须为关卡 ID 编制索引才能使其正常运行?

提前感谢您的建议!

最佳答案

在单列上创建索引很好,但根据您提供的信息,创建包含两列的索引将是更好的解决方案。我会运行一个

alter table highscores add index(columnScore, columnLevel);

这将使性能更好。从数据库的角度来看,无论您要查找什么高分,数据库都会知道在哪里搜索它们。

关于这一点,如果可以(并且您正在使用 mysami 表),您还可以运行:

alter table order by columnScore, columnLevel;

然后它将所有数据分组在一起,这样即使数据库知道每一位在哪里,它也可以找到附近属于彼此的所有记录 - 这意味着更少的硬盘驱动器工作 - 因此更快的结果。

第二次手术也可以产生巨大的不同。我工作的 PC(九十年代顶级的可怕旧机器)有一个数据库,里面有几百万条记录,我建立了 - 没什么大的,大约 2.5gb 的数据包括索引 - 性能拖累,但订购索引的数据将查询时间从每次查询约 1.5 分钟缩短到约 8 秒。这只是由于硬盘速度能够访问包含数据的所有扇区。

关于php - MySQL分区高分表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11930368/

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