귀하의 조언이 필요합니다. 이 모든 값이 잘 보이지 않습니다으로많은 정보가 포함 된 가치 - TSQL
CASE
WHEN PLAN_GIVEN IN (this list contains 1700 values to compare) THEN 'P1'
WHEN PLAN_GIVEN IN (this list contains 1800 values to compare) THEN 'P2'
ELSE NULL
END AS PLAN_NAME
내가 모두 1,700 값 IN () THEN 'P1'
을 나열 할 수 없습니다 :
CASE
문이있다.
은 내가
lookup_table
같은
lookup_table
columnA = all 1700 values
columnB = all 1800 values
에 1700 개 값 1800 개 값을 절약 노력이 쿼리를 사용 : 위의 코드가 작동되지만
CASE
WHEN PLAN_GIVEN IN (SELECT columnA from lookup_table) THEN 'P1'
WHEN PLAN_GIVEN IN (SELECT columnB from lookup_table) THEN 'P2'
ELSE NULL
END AS PLAN_NAME
거의 10을 실행하는 데 더 많은 시간이 걸리는를 실행을 완료하는 데 몇 분.
이렇게하려면 다른 방법이 있습니까? , 또는
CASE
WHEN EXISTS (SELECT NULL from lookup_table WHERE PLAN_GIVEN = columnA)
THEN 'P1'
WHEN EXISTS (SELECT NULL from lookup_table WHERE PLAN_GIVEN = columnB)
THEN 'P2'
ELSE NULL
END AS PLAN_NAME
을 조회 테이블에 가입하고 CASE
표현에 조회 값을 비교하려고 :
1700 값은 어디에서 오는가? 애플리케이션에서 오는 경우 테이블 값 매개 변수로 전달할 수 있습니다. 또는 표에 열을 추가하고 한 번 업데이트 할 수 있습니다. 기준과 일치하는 모든 행에 대해 true로 설정할 수 있습니다.자, 이제까지 유지되는 한, 귀하의 질의는 이제 단지 IsInThisCrazyList = 1이라고 말할 수 있습니다. –
Aaron !! 이 값은 어떤 응용 프로그램에서도 가져 오지 않습니다. 고객이 쿼리와 비교할 값을주었습니다. 기존 테이블의 구조를 변경할 수 없으므로 테이블 반환 매개 변수를 사용하려고합니다. –