/ / Как да подобрим sql съдържащ IN с функция Split в WHERE клауза? - sql, sql-сървър

Как да подобрим SQL, съдържащ IN с разделена функция в клаузата WHERE? - sql, sql-сървър

Да кажа, че имам запитване, което ще работи върху записи на милиони. Сега имам това в моята клауза 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