가끔씩 느리게 실행되는 응용 프로그램이 있는데 데이터베이스 커서와 관련이 있다고 생각합니다.커서에 대한 SQL Server 인덱스
응용 프로그램 소스에 대한 액세스 권한이 없으므로 데이터베이스 호출을 제어 할 수 없지만 필요한 경우 인덱스를 추가 할 수 있도록 데이터베이스가 열려 있습니다.
문제는 인덱스로 커서를 빠르게하는 방법을 모른다는 것입니다.
커서 쿼리가 간단하고
SELECT * FROM table WHERE field1=1 AND field2=2 ORDER BY field3, field4
처럼 내가 SSMS에서 직접 쿼리를 실행하면
(표는 1M 행에 대해이 포함되어 있습니다. 때로는 하나의 왼쪽뿐만 아니라 가입이) 그것을 커서의 응용 프로그램에서 실행될 때 첫 번째 행을 가져 오는 데 30 초가 걸릴 수 있습니다 (sql-trace로 확인 됨).
WHERE 및 ORDER BY 절의 필드는 모두 개별적으로 인덱싱됩니다.
field1, field2, field3, field4에 결합 된 색인이 더 빠를 것이라고 생각합니다. 필드의 각 조합과 순서에 대한 색인을 만들지 않고 속도를 높이는 방법이 있습니까?
: 나는 항상
쿼리 실행 계획을 보았습니까? – Kane
옵션으로 커서를 선언하고 있습니까? 즉, 당신은 단지 DECLARE bob CURSOR FOR SELECT를하고 있습니까? 아니면 명시 적으로 옵션을 제공하고 있습니까? 예를 들어, bob CURSOR STATIC, READ_ONLY FOR SELECT ... (또는 옵션의 다른 조합 - 동적, FAST_FORWARD, KEYSET, etc ...) –
어쨌든 커서 옵션을 변경할 수 없으므로 커서 옵션을 확인하지 않았습니다. 커서 옵션은 인덱스 조정에 실제로 중요한가요? 쿼리에 대한 실행 계획을 살펴 보았지만 쿼리 자체가 빠르게 실행되기 때문에 많은 내용이 표시되지 않습니다. 커서의 실행 계획을 보려면 어떻게해야합니까? – adrianm