Sybase SQL - 与union子句不同

时间:2013-08-28 19:40:37

标签: 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, column3
    FROM table2
    INNER JOIN ...
    WHERE ...

) as DT

我正在检查一些网站,发现UNION子句只获得了区别值。使用distinct子句,执行时间为15秒,没有,3秒。 (查询有点复杂:/)。 所以在任何情况下,第一个查询的DISTINCT会有什么不同,或者我可以简单地删除它吗?

提前致谢!


---编辑谁可能会发现这个有用:) --- 问题出在UNION声明之后使用的ISNULL上。在我将其更改为在子查询中之后,性能与删除distinct不同。

1 个答案:

答案 0 :(得分:0)

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