Да кажа, че имам запитване, което ще работи върху записи на милиони. Сега имам това в моята клауза WHERE,
WHERE Status IN (SELECT VALUE FROM SPLIT(@Status,","))
Ясно е, че "ИЗБЕРЕТЕ СТОЙНОСТ ОТ SPLIT (@Status,", ")" ще работи на всеки ред. Трябва да подобря това.
Отговори:
1 за отговор № 1Можете или да направите текущото решение или да сравните неговото изпълнение с INNER JOIN
:
SELECT A.*
FROM YourTable A
INNER JOIN SPLIT(@Status,",") B
ON A.Status = B.Value
1 за отговор № 2
Как да поставите резултатите от SPLIT
функция в a table variable/temp table
първо и след това правим INNER JOIN
по-скоро?
1 за отговор № 3
Разопаковайте низа до темп таблицата и вместо това използвайте това в заявката си. Наличието на индекс на полето в таблицата с темповете трябва да помогне.
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