首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL:单个数据集的类似分区的函数?

MySQL:单个数据集的类似分区的函数?
EN

Stack Overflow用户
提问于 2015-01-29 21:14:33
回答 1查看 21关注 0票数 0

我有一个拥有数百万条记录的表,它们利用EFF_FROM和EFF_TO日期字段对记录进行版本化。

99%的情况下,当应用程序查询此表时,它只涉及EFF_TO为2099-12-31的记录,或者是活动的而非历史的记录。

我只将活动记录复制到表的测试版本中,应用程序的SELECT查询从60秒到3秒。

我不一定要对每个EFF_TO日期进行分区。我不想增加这种开销,特别是在填充表的进程中。我只想优化查询记录与2099-12-31,我希望性能是即时的。

有什么简单的方法吗?还是我必须创建一个活动表和一个历史表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-29 21:27:50

为一组数据划分类似于函数?

这是任何矛盾的东西,但是您要问的是划分成两组数据,一组是未来的EFF_TO,另一组是过去的数据。

EFF_TO为2099-12-31

设计错误-这些应该是空的。

如果它们为空,则分区将是简单的。就目前情况而言,您将不得不删除并重新创建分区--这是一个相当昂贵的操作(请查看用于在线模式更新的工具)。

您可以通过创建多个分区,定义当前的周期,然后在结束时添加一个额外的分区,并定期从一开始删除一个分区,从而将影响降到最低。

应用程序的SELECT查询从60秒变为3秒。

除了表的大小之外,还有很多其他原因可以解释性能的提高。

  • 如果它正在进行全表扫描,这是应用程序中的一个设计错误。
  • 您的索引可能不像它们应该的那样最新
  • 索引的逻辑结构可能不平衡,需要优化。
  • 表和索引的物理结构很多是零碎的,需要优化。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28224710

复制
相关文章

相似问题

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