首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按年龄划分的MySQL水平分区

按年龄划分的MySQL水平分区
EN

Stack Overflow用户
提问于 2012-06-20 01:38:45
回答 1查看 963关注 0票数 4

在我的MySQL数据库表中,前端用户只使用最近两周的记录。任何早于此日期的数据仅供管理使用。

我想做的是根据数据库中记录的年龄对数据库进行水平分区,从而优化前端用户的性能。

因此,前端需要一个分区,其中一个分区只包含过去两周的记录,另一个分区需要包含任何超过2周的记录。

但是,我没有在MySQL文档(here)中看到这是否可以做到。

有人能告诉我这是否可以实现,表的create语句看起来可能是什么样子?

EN

回答 1

Stack Overflow用户

发布于 2012-08-28 19:01:58

好的,对于两个表的解决方案,联合sql看起来像这样:

管理员用户将使用:

代码语言:javascript
复制
select
  id,
  column1,
  column2,
  age
from
  oldrecs

union

select
  id,
  column1,
  column2,
  age
from
  newrecs

order by
  age

这是一个单独的查询,将返回一个结果集。请注意,选择块具有相同的字段计数和类型。在您的示例中,这两个表将具有相同的布局。

同时,您的网站用户将只使用该查询的最后一部分:

代码语言:javascript
复制
select
  id,
  column1,
  column2,
  age
from
  newrecs
order by
  age

除此之外,您还需要一个cron作业来将过时的记录从newrecs表移动到oldrecs表。

代码语言:javascript
复制
  insert into oldrecs
  select
    id,
    column1,
    column2,
    age
  from
    newrecs
  where
    age < date(now()) - interval 7 days;

  delete from
    newrecs
  where
    age < date(now()) - interval 7 days;
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11106350

复制
相关文章

相似问题

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