请问表里面有4亿条数据,如果做优化?

数据库版本是db2 9.7。表出入口T_CRK,数据量为4亿,并且每月都增加几百万。 结构大致如下:ID       主键CRRQ     日期PLACE    地点XNAME    姓名....还有其他的字段,但主要是这几个字段,查询的时候也一般是按照...显示全部
数据库版本是db2 9.7。
表出入口T_CRK,数据量为4亿,并且每月都增加几百万。 结构大致如下:
ID       主键
CRRQ     日期
PLACE    地点
XNAME    姓名
....

还有其他的字段,但主要是这几个字段,查询的时候也一般是按照这几个条件查询,其中,日期是必选的查询条件,用户可以选择某一天也可以是某个时间段。姓名用户希望是模糊查询,地点总共有200个。

我是这样做的优化:
1、把原来的表改成分区表。按照日期的年份分区,既 一年 的数据是一个分区。
2、在日期上建立索引。后来想在日期上建立一个分区索引,一查才知道 db2 9.7 默认建立的就是分区索引。
3、在地点、姓名上建立了索引。

现在,查询条件为 等于某个日期的时候效率很高(<2s)。但是如果是一个时间段(一个月,一个月大约为几百万数据),就很慢,大约得1-2分钟。
如果在加上地点、姓名那就更慢了。最要命的是用户要求姓名模糊查询。

请大家指点一下。多谢!!收起
参与13

查看其它 10 个回答UniverseSae的回答

UniverseSaeUniverseSae数据库管理员待业
1.如果地点不会太多的话,可以在分区表的基础上,把地点做成MDC索引,这样会提高一定的精确查询效率.
2.不知道你的模糊查询是否使用LIKE或者函数之类实现,但是你要注意,基于以上这两点都会使索引失效.
互联网服务 · 2013-03-08
浏览502

回答者

UniverseSae
数据库管理员待业

UniverseSae 最近回答过的问题

回答状态

  • 发布时间:2013-03-08
  • 关注会员:2 人
  • 回答浏览:502
  • X社区推广