0

ここに会社を辞めた同僚からのコードがあり、それをより速く実行しようとしています。基本的に、次のことを行います。

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 句は個別の値しか取得できないことがわかりました。明確な句を使用すると、実行に 15 秒ほどかかり、それを使用しない場合は 3 秒かかります。(クエリは少し複雑です:/)。いずれにせよ、最初のクエリの DISTINCT は違いを生むでしょうか、それとも単純に削除できますか?

前もって感謝します!


--- これが役に立つと思う人のために編集してください :) --- 問題は、UNION ステートメントの後に使用された ISNULL にありました。サブクエリ内にあるように変更した後、パフォーマンスは個別を削除した場合と同じになりました。

4

1 に答える 1

0

テーブルに null 値がない場合は削除できます。その場合、それらは意味的に同等です。ただし、null 値がある場合は、null 値がDistinct追加されるため、そうではありませんSELECT ALL

于 2013-08-28T19:45:22.420 に答える