2010-05-05 2 views
4

우리는 고객이 SQL 서버의 인덱스 통계 등을 업데이트 할 수 없으므로 과거에는 index hints을 사용해야했습니다. 일부 고객은 여전히 ​​Sql Server 2000을 사용하고 있으므로 Sql Server의 이후 버전에서는 더 나은 쿼리 최적화 프로그램을 사용할 수 없습니다.LinqToSql에서 SQL Server에 "인덱스 힌트"를 전달하는 방법은 무엇입니까?

그렇다면 LinqToSql을 사용하여 원시 Sql 대신 쿼리를 작성할 때 인덱스 힌트를 어떻게 전달합니까?

+1

왜 통계를 업데이트해야합니까? 자동 업데이트가 필요하며 매주 업데이트 스크립트를 쉽게 실행할 수 있습니다. 20 년 만에 통계 업데이트에 문제가 없었습니다. – TomTom

+0

나는 이것에 대해 @TomTom에 동의해야한다. 이것은 인덱스 힌트가 해결하려고했던 문제가 아니며 다음을 통해 통계 업데이트를 수행 할 때 훨씬 좋은 주행 거리를 얻을 것이라고 생각한다. 자동 업데이트 (기본적으로 활성화되어 있음) 또는 자동 업데이트 기능이 꺼져 있을지 걱정되는 경우'UPDATE STATISTICS' 또는'sp_updatestats'를 실행하는 백그라운드 프로세스가 필요합니다. – Aaronaught

+0

@Tom, 시스템은 24 * 7을 실행할 필요가 있으므로 "스크립트 업데이트"등은 동의하기가 매우 어렵습니다. 시스템을 설치하는 사람들이 자신들이 무엇인지 이해할 지 모르겠습니다. 데이터 통계가 부족한 문제는 "오래된 경험"일 수도 있지만 "색인 힌트"가 사용되는 이유를 묻는 순간 내가 말한 것입니다. 나는 인덱스 힌트를 사용하지 않고 도망 갈지도 모르지만, 나는 내 기지 토끼를 충당하기 위해 노력하고있다. –

답변

1

이것은 지원되는 것이 아니고 쿼리를 통한 옵션 만 트랜잭션 격리 수준을 설정하는 것이지만이 문제는 도움이되지 않습니다.

두 가지 코스 중 하나를 선택하는 것이 좋습니다. 실제로해야 할 일입니다.

  1. 당신이 경우, 개인적으로

를 SQL로

  • 이동 거리 LINQ에서 .... 저장 프로 시저를 작성하여 프로 시저 내에서이 문제를 처리하고 전화를 LINQ를 사용할 수 있습니다 이것은 정말로 필요합니다. 나는 옵션 2를 추천 할 것입니다. 실제로 데이터베이스 호출에 대해 해당 수준의 조치/제어를 수행해야하는 경우 자동 생성 된 SQL은 이후 시점에서도 문제가 될 수 있습니다.

  • 0

    불행히도 이것은 불가능합니다. 당신이 할 수있는 유일한 일은 트랜잭션 격리 수준에 영향을 미칩니다. 이 here의 예를 참조하십시오.

    관련 문제