【问题标题】:SQL Server Partition Performance IssueSQL Server 分区性能问题
【发布时间】:2013-02-21 22:59:13
【问题描述】:

我有以下场景:

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 进行分区,但查询执行时间保持不变。甚至执行计划还是一样的。据我了解,对表进行分区应该会大大提高性能?

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

提前致谢!

【问题讨论】:

    标签: sql-server-2008 indexing partitioning


    【解决方案1】:

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

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

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

    【讨论】:

    • 你的意思是A (Type, ID)。列Type 在表A 中。
    猜你喜欢
    • 2020-02-21
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 2015-04-05
    • 2012-05-30
    • 1970-01-01
    相关资源
    最近更新 更多