SQL 서버 설치의 성능 문제를 도와 달라는 요청을 받았습니다. SQL Server 전문가는 아니지만 한 번 살펴보기로했습니다. OK로 작동하는 닫힌 소스 응용 프로그램을 사용하고 있습니다. 그러나 2000 년에서 2005 년 사이에 SQL Server를 업그레이드 한 후 응용 프로그램 성능이 크게 떨어졌습니다. SQL 프로파일 러를 실행하고 다음 쿼리 (무죄를 보호하기 위해 필드 이름이 변경됨)가 실행될 때까지 약 30 초가 걸렸습니다. 내 첫 번째 생각은 내가 쿼리를 최적화해야한다는 것이었다. 그러나 응용 프로그램이 폐쇄 된 소스이고 공급 업체가 도움이되지 않는다면 이는 불가능합니다. 그래서이 쿼리를 변경하지 않고 빠르게 실행하는 방법을 알아 내려고 노력 중입니다. 또한 이전 SQL Server 2000 제품에서이 쿼리가 어떻게 더 빨리 실행되었는지도 분명하지 않습니다. 아마도 새로운 SQL 서버에서 수행되지 않거나 작동하지 않는 인스턴스에 적용되는 일종의 성능 조정이있었습니다. DBCC PINTABLE이 떠오른다.Microsoft SQL Server : 멍청한 쿼리의 성능을 향상시키는 방법?
select min(row_id) from Table1 where calendar_id = 'Test1'
and exists
(select id from Table1 where calendar_id = 'Test1' and
DATEDIFF(day, '12/30/2010 09:21', start_datetime) = 0
)
and exists
(select id from Table1 where calendar_id = 'Test1' and
DATEDIFF(day, end_datetime, '01/17/2011 09:03') = 0
);
표는 약 6200 항목을 가지고 다음과 같습니다
어쨌든, 여기서 문제가되는 쿼리입니다. 나는 효과가없는 다양한 지표를 만들려고 노력했다.
id calendar_id start_datetime end_datetime
int, primary key varchar(10) datetime datetime
1 Test1 2005-01-01... 2005-01-01...
2 Test1 2005-01-02... 2005-01-02...
3 Test1 2005-01-03... 2005-01-03...
...
누군가가이 수수께끼를 해결하는 데 도움이된다면 매우 감사드립니다.
미리 감사드립니다.
이 코드는 저장 프로 시저에 있습니까? SP 매개 변수가 구동됩니까? –