Sybase SQL-Distinct over union子句

Sybase SQL-Distinct over union子句,sql,distinct,union,sybase,Sql,Distinct,Union,Sybase,我这里有一个代码,来自一位离开我公司的同事,我正在努力让它运行得更快。基本上,它可以做到以下几点: SELECT DISTINCT column1, ISNULL(column2,0), column3 FROM ( SELECT column1, column2, column3 FROM table1 INNER JOIN ... WHERE ... UNION SELECT ALL column1, column2

我这里有一个代码,来自一位离开我公司的同事,我正在努力让它运行得更快。基本上,它可以做到以下几点:

SELECT DISTINCT
    column1,
    ISNULL(column2,0),
    column3
FROM (
    SELECT column1, column2, column3
    FROM table1
    INNER JOIN ...
    WHERE ...

    UNION

    SELECT ALL column1, column2, column3
    FROM table2
    INNER JOIN ...
    WHERE ...

) as DT
我检查了一些站点,发现UNION子句只获取distincts值。使用distinct子句执行大约需要15秒,而不使用distinct子句则需要3秒。(查询有点复杂:/)。 因此,在任何情况下,第一个查询上的DISTINCT是否会产生任何差异,或者我可以简单地删除它

提前谢谢


---为可能认为此选项有用的用户编辑:)---
问题出在UNION语句之后使用的ISNULL上。在我将其更改为子查询内部后,性能与删除distinct相同

如果表中没有空值,可以将其删除。在这种情况下,它们在语义上是等价的。但如果存在空值,因为具有
Distinct
会添加空值,
SELECT ALL

也会添加空值,那么您可能会发现Distinct关键字提高了性能。你做过任何测试吗?我做过一些测试,在一开始使用这个独特的方法是让整个查询在15秒内执行。没有它,只需要3.我只意识到一件事。。在第二个查询中,有一个“全选”(我刚才编辑了问题中的查询)。但是,我仍然认为它不会改变,对吗?嗯,当你说它不应该影响性能并发现问题所在时,我很好奇。在第一次选择时,它有一个ISNULL条件,因此我假设这就是问题所在,因为它在并集之后“更改”了值。我在内部查询中包含了ISNULL条件,并保留了distinct以防万一,但现在只需要3秒钟。谢谢你的帮助!