0

いくつかのテーブルを結合するクエリがあり、このような where 句で演算=子の代わりに演算子を使用すると、パフォーマンスが大幅に向上します。in

  • =オペレーターは 1 秒もかかりません。
  • inオペレーターは約 1 分かかります。

where P.GID in ( SELECT GID from [dbo].[fn_SomeFunction] (15268) )

ほとんどの場合、サブクエリは 1 つの結果を返します。この変更だけで、ほとんどの場合は改善されますが、他の場合にはエラーが発生します。

この動作の理由は何ですか?

4

2 に答える 2

1

テストされておらず、構文エラーが含まれている可能性があるようなものを試してください。主なアイデアは、一時テーブル変数で目的の ID を取得し、それを結合で使用することです。それが役立つことを願っています。

DECLARE @gids TABLE( 
GID UNIQUEIDENTIFIER NOT NULL
)

INSERT INTO @gids (GID)
    SELECT
        GID
    FROM [dbo].[fn_SomeFunction](15268)

SELECT * FROM SomeTable st INNER JOIN st.GID = @gids.GID
于 2013-10-14T20:37:55.507 に答える