0

我读过几篇关于表分区的文章,但我仍然对它的用途感到困惑。我的情况如下。

我有一个包含大约 1000 万条记录的大表 TA,每天加载 30-40K 条记录。

表 TA 包含许多列,包括日期字段,另外一个关键列是 project#,它是 varchar。

现在我可以选择在日期字段上对表 TA 进行分区。

但是,如果我主要看到我的查询,我将仅获取一个日期的数据,并且由于日期字段已编入索引,因此数据获取不是一个大问题。

Similary qry 在“WHERE”条件下也包含带有“IN”子句的项目#,即我必须通过“IN”子句提供 N 个项目#作为输入。

现在建议我应该如何进行。

4

2 回答 2

2

如果您将始终阅读完整的每日数据,请执行以下操作:

步骤 0)删除日期的全局索引,分区不需要它。

步骤 1) 创建每日分区

步骤2)在项目上创建二级分区本地索引

如果我误解了你,并且你不会阅读完整的每日分区,只是其中的一部分,那么保持你的模式不变。

于 2012-06-14T11:02:07.467 回答
1

在 ta(upload_date, project#) compress 1 上创建索引 ta_idx;

多列压缩索引可能就足够了。由于upload_date添加行时不会发生太大变化,因此聚类因子将保持非常低。而且如果重复值很多,压缩upload_date可以节省很多空间。这可能是一个非常有效的索引。

您当然可以通过添加分区来提高效率,但这可能不值得麻烦。分区非常有用,但也可能非常棘手。如果这是您计划使用分区的唯一地方,我会避免使用它。(除非您想以此为借口来了解有关分区的更多信息。)

于 2012-06-19T18:13:55.460 回答