0

我有以下情况:

TableA (ID GUID, Type INT) : +60M rows
TableB (ID GUID) : +5M rows

TableA 有一个关于 ID 和类型 TableB 的索引,主键是 ID

我需要改进以下查询:

SELECT * FROM TableA A
INNER JOIN TableB B
   ON A.ID = B.ID AND A.Type = 5

查询大约需要 30 秒才能完成。

我们已经尝试在Type列上对TableA进行分区,但查询执行时间保持不变。甚至执行计划还是一样的。据我了解分区表应该大大提高性能?

我是否必须调整查询以使用分区从而提高性能?我的索引错了吗?

提前致谢!

4

1 回答 1

2

您是认为分区是一种在按下时可以提高性能的神奇开关的人之一。分区主要会降低性能并在一些狭窄的情况下有所帮助。它主要是用于批量加载和数据归档/删除的管理功能。

分区会带来严重的后果,如果没有正确的理解、计划和测试,就无法做到。

创建正确的索引(在您的情况下A(Type, ID)将是一个好的开始。或者A(ID) WHERE Type = 5(过滤索引))。

于 2013-02-21T12:33:40.943 回答