INよりもEXISTSを使用するクエリを記述する必要があるため、高速に実行されます。フィルタには、EXISTSが唯一のオプションのように見えるほど多くのパラメータ値が入力されています。違いは、20 +分のクエリと5秒のクエリの間にあります。フィルタのEXISTSが多すぎる値を返す
これは私が持っているクエリです:
SELECT DISTINCT d.GROUP_NAME
FROM [EMPLOYEE] e JOIN [DATA_FACT] d ON (e.KEY = d.KEY)
WHERE d.DATE BETWEEN @Start and @End
AND EXISTS
(
select '1234567' -- @ID
)
AND e.Location IN (@Location)
ORDER BY d.GROUP_NAME ASC
問題は、それはあまりにも多くのレコードを返しているということです。私はフィルタリングする渡している値に基づいて、私は戻って1行を取得する必要がありますが、代わりに、私は28
を取得しています私はEXISTS削除した場合、私は私が必要とする1つのレコードの取得後、次の行を追加します。
をAND e.ID IN ('1234567')
正しい結果が得られるように、EXISTSで動作するようにクエリを修正する方法はありますか?
「1234567」はどこから来たのですか? –
@ JoshPartの場合、値はSSRSからパラメータを介して取得されます。パラメータには多くの値があります。しかし、わかりやすくするために、上記のコードでパラメータを削除し、そのダミー値をハードコードした – Zolt
Existsは通常、外部クエリを内部クエリに関連付けるために使用されます。チェックの条件がないため、現在のバージョンですべてのレコードが返されます。 –