首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL分区高分表

MySQL分区高分表
EN

Stack Overflow用户
提问于 2012-08-13 16:11:44
回答 2查看 347关注 0票数 2

我有一张桌子,里面有一场比赛的高分。这个游戏有许多级别,分数然后按分数DESC (这是一个索引)排序,其中级别是级别ID。在此级别ID列上进行分区会创建与创建许多单独的级别表(每个级别ID一个)相同的结果吗?我需要它来以某种方式分离出级别数据,因为我预计会有10个数百万的条目。我听说分区可以加速这个过程,同时让我的表标准化。

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

提前感谢您的建议!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-13 16:17:31

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

代码语言:javascript
运行
复制
alter table highscores add index(columnScore, columnLevel);

这将使性能变得更好。从数据库的角度来看,无论您正在寻找多高的分数,数据库都知道在哪里搜索它们。

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

代码语言:javascript
运行
复制
alter table order by columnScore, columnLevel;

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

第二个操作也可以产生巨大的不同。我工作的PC (90年代最好的可怕的旧机器)有一个数据库,里面有几百万条记录,我建立了一个数据库-没有什么大的,大约2.5 My的数据,包括索引-性能很差,但是对索引的数据排序将查询时间从每次查询1.5分钟提高到大约8秒。这只是由于硬盘驱动器能够到达包含数据的所有扇区的速度。

票数 1
EN

Stack Overflow用户

发布于 2012-08-13 16:17:12

如果您计划存储不同用户的数据,那么使用两个表如何?一个表包含有关不同级别的所有信息,另一个表包含每个用户的一行,以及他在XML/json中的分数。

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

https://stackoverflow.com/questions/11930368

复制
相关文章

相似问题

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