在SQL Server 2008升级之后,使用UNION进行查询的速度非常慢

时间:2011-08-31 18:21:23

标签: sql-server-2008 sql-server-2000 performance

我们从SQL Server 2000迁移到2008,当我们使用UNION运算符时,某些用户(在某些数据库角色中)的查询运行速度非常慢。我用UNION ALL

尝试了

查询如下所示

SELECT  'PONumber'= '','POId'=''

UNION 

SELECT DISTINCT 
                'PONumber'=PONumber, 
                'POId'=RTRIM(CONVERT(varchar(32),po.POId) )
FROM  PurchaseOrder po JOIN  ... JOIN ..... JOIN ...................

如果我只删除第一部分(和UNION)并运行第二个查询,则会立即返回结果。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我不知道它在SQL 2000中会有什么反应,但是当合并两个查询的结果时,使用UNION而不是UNION ALL将导致排序操作(获取摆脱重复)。这可能是一个大量的处理,具体取决于结果集的大小。

此外,SQL 2000和SQL 2008之间的tempdb使用率变化非常大。排序操作很可能使用tempdb,因此您应检查tempdb的介质并确保它有足够的空间等。