表分区与多个表

时间:2015-06-03 10:17:49

标签: sql-server

假设我们有一个巨大的表格,我们在上面运行非常复杂的查询。

说它是一个crm,我们有一个名为People [id(GUID),listId(Guid),name,email,city,......]的表格。

将每个用户表示为多个表是否会更好:

People_<USER_ID>如果我们有100个用户,我们就有100个这样的表

上面有一个像我们分区的user_id列的表吗?

1 个答案:

答案 0 :(得分:1)

每种方法都有优点和缺点。

例如,如果使用单独的表,则可以单独执行维护,例如重建索引或统计信息,如果添加新用户,则创建新表很简单,而不是修改分区功能。 / p>

使用分区表,查询大大简化,因为您不会依赖于每个表的UNION查询。

中途是使用分区视图;即构建一个视图,其中包含UNIONed各个表的定义。这提供了分区表的一些优点,但是如果添加新表,并且使用100个表,则视图定义将需要维护,这将非常难以处理。

分区表通常最适用于数据仓库类型的环境,您可以在其中拥有加载表,并将其作为每个数据加载的新分区添加。在这种环境中,您通常只在定义的时间将数据写入一个分区,并在其余时间从所有分区读取。

如果您的数据量非常大,那么就执行维护任务所花费的时间而言,如果仅在一个或几个分区上需要分区,则分区可以提供一些好处。但是,最好找到适合此的分区函数。例如,如果您的行被写入一次而没有更新,则在其上添加创建的日期时间和分区,或者使用递增的主键并对其进行分区,这意味着您只需要重新索引活动分区。