我正在从SQL Server上具有约400个连接的表中进行选择,每个连接选择该表的一部分并写入文件; select语句使用表上的索引,每个语句独立运行2.5分钟。当我尝试以nolock运行400个类似的查询时,总查询时间长达40分钟。有谁知道我可以在哪里进行优化以将400个查询加速到与运行一个查询相同的速度?
为更好地解释,这是查询的示例:
SELECT * FROM TABLENAME WITH (NOLOCK) WHERE Id BETWEEN 0 AND 1999999
SELECT * FROM TABLENAME WITH (NOLOCK) WHERE Id BETWEEN 2000000 AND 3999999
SELECT * FROM TABLENAME WITH (NOLOCK) WHERE Id BETWEEN 4000000 AND 5999999
.
.
.
SELECT * FROM TABLENAME WITH (NOLOCK) WHERE Id BETWEEN 710000000 AND 711999999
答案 0 :(得分:1)
在这种情况下,您可以使用表分区优化查询性能。分区表比唯一的索引表效率高,速度快。
因此,请为ID列创建Partition Schema
和Partition Function
。
以下是分区表的好处-
下面的链接可能对您有所帮助。