1

何百万ものレコードを操作するクエリがあるとしましょう。今、私はこれを私のWHERE句に入れています、

WHERE Status IN (SELECT VALUE FROM SPLIT(@Status,','))

明らかに、'SELECT VALUE FROM SPLIT(@Status、'、')'はすべての行で動作します。これを改善する必要があります。

4

3 に答える 3

1

現在のソリューションを実行するか、そのパフォーマンスをINNER JOIN:と比較することができます。

SELECT A.*
FROM YourTable A
INNER JOIN SPLIT(@Status,',') B
ON A.Status = B.Value
于 2012-05-28T05:26:11.013 に答える
1

SPLIT関数からの結果を最初に配置してから、これtable variable/temp tableを実行するのINNER JOINはどうですか?

于 2012-05-28T05:26:17.673 に答える
1

文字列を一時テーブルに解凍し、代わりにクエリで使用します。一時テーブルのフィールドにインデックスを付けると役立つはずです。

create table #Split (Value varchar(10) primary key)

insert into #Split(Value)
select distinct Value
from SPLIT(@Status, ',')

select SomeCol
from YourTable
where Status in (select Value from #Split)

drop table #Split
于 2012-05-28T05:27:27.377 に答える