아래에서 내 쿼리 최적화에 대한 도움을 받으려합니다.sybase의 조건부 쿼리 최적화
몇 년 동안 직원 데이터를 노출하는보기를 원합니다. 이보기에는 직원 ID, 연도 및 직원 통계가 열인 직원 테이블의 데이터가 있습니다. EmployeeID와 Year가있는 testemployees라는 테이블도 있습니다. 이것은 데이터가 있거나 없을 수도있는 employee 테이블의 서브 세트입니다. 내가 이루고자하는 목표는 다음과 같습니다.
testEmployees 테이블에 데이터가있는 경우 내 뷰는 testEmployees의 직원에 대해서만 직원 정보를 가져 와야하며 testEmployees에 데이터가 없으면 내보기에 직원 테이블의 모든 데이터가 있어야합니다. .
내 직원 테이블은 실제로 매우 크며 아래 쿼리가 작동하더라도이 데이터를 가져 오는 데 많은 시간이 필요합니다. 이 쿼리를 향상시킬 수있는 방법에 대한 정보는 크게 감사하겠습니다.
Create view dbo.employees(Year, EmployeeID)
as
select * from
employee e, testemployees te
where e.Year = case when((select count(1) from testemployees)>0) then te.Year else e.Year
and e.employeeID = case when((select count(1) from testemployees)> 0) then te.employeeID else e.employeeID
쿼리 최적화 방법에 대한 의견을 알려주십시오. 다른 종류의 조인을 사용하면 도움이됩니까?
미리 감사드립니다.
테이블에 인덱스를 언급하지 않았습니다. 보유하고있는 경우 색인의 유형 (클러스터 된/클러스터되지 않은, 고유 한 등) 및 색인에 포함 된 행을 포함하십시오. 실행중인 SAP Sybase ASE의 버전을 지정할 수도 있습니다 –
@MichaelGardner 안녕하세요! 기본 키 열에 클러스터 된 인덱스를 사용했습니다. 올해와 EmployeeID 조합에 대한 색인이 있습니다. Sybase ASE 11/12/15 TDS 5.5를 사용하고 있습니다. 이게 당신이 요구하는 것입니까? 도움에 미리 감사드립니다! – user3358472