훨씬 더 큰 테이블에서 특정 데이터를 추출하는 스크립트가 있습니다. 특히 한 필드가 특히 규칙적으로 변경됩니다.깃발에 따라 SQL을 통해 다른 테이블에서 선택
SELECT CASE @Flag WHEN 1 THEN t.field1 WHEN 2 THEN t.field2 WHEN 3
THEN t.field3 END as field,
...[A bunch of other fields]
FROM table t
그러나 이제 데이터에 대한 다른 처리 작업을 수행하려고합니다. 가장 효과적인 방법을 찾으려고합니다. 깃발을 가져올 방법이 필요합니다. 오른쪽 필드로 잘라낸 데이터에 대해 이야기하고 있습니다.
(대부분 무슨 일이 일어날 지 알기 위해) 약간 놀랐던 가능한 해결책 중 하나는 스크립트의 내용을 전달 된 플래그가있는 테이블 함수로 덤프 한 다음 함수의 결과 나는 그것을 작동시킬 수 있었지만, 그것보다 현저히 느리다 ...
분명히 알 수있는 해결책은 프로세서 사이클을 가장 효율적으로 사용하는 것이다. 플래그 값. 그러나 문제는 계산을 수행하기 위해 올바른 캐시 테이블에서 데이터를 추출하는 몇 가지 방법을 찾는 것입니다. 이는 나의 의도 한 결과 모든 - 잘못된하지만, 명백한 응답은 알 수있는 바와 같이
SELECT CASE @Flag WHEN 1 THEN table1.field WHEN 2 THEN table2.field WHEN 3
THEN table3.field END as field,
...[The various calculated fields]
FROM table1, table2, table3
불행하게도,이 거대한 크로스 조인을 생성 뭔가
처럼 될 것입니다.누군가가 "x 테이블 만보기"로 크로스 조인을 전환하는 방법을 알고 있습니까? (동적 SQL을 사용하지 않으면 어떤 일을 처리하기가 어렵습니까?) 아니면 대안적인 해결책은 여전히 합리적으로 빠릅니까?
편집 : 좋은 이유가 아니건간에 구현하려고 시도한 아이디어는 크게 테이블이 다른 3 가지 쿼리를 사용하지 않는 것이 었습니다. 변경 될 때마다 똑같이 편집해야했습니다. 논리. 그래서 나는 지금까지 "플래그가 완전히 분리되어있다"는 것을 피했습니다 ...
이 질문을 하나의 쿼리로 만드는 데 드는 노력은 작업을 완료하는 데 더 효과적입니다. –