기본적으로 데이터베이스 (Microsoft SQL Server 2008)에서 데이터를 추출하는 것과 관련된 비즈니스에 대한 할당이 있습니다. 이 과정에서 사용자는 선택할 열을 선택하고 선택할보기를 선택하고 WHERE 절을 작성할 수 있습니다. 사용자가 선택한 것을 기반으로 SQL 쿼리가 그에 따라 생성됩니다. 요구 사항은 사용자가 ANY 뷰에서 ANY C 럼을 선택하고 WHERE 절의 ANY C 럼으로 필터링 할 수 있다는 것입니다. 회사는 솔루션에 데이터웨어 하우스/OLAP 사용을 원하지 않으며 제 3 자 소프트웨어를 제한하려고합니다. 따라서 기본적으로 GUI 기반의 SQL 쿼리를 동적으로 생성하고 데이터베이스에 연결하는 .NET Windows Forms 애플리케이션이 필요합니다.동적 쿼리 최적화
내 관심사는 쿼리를 최적화하는 방법입니다. 나는 아직 SQL 쿼리를 최적화하는 데 아무런 의미가 없지만 첫 번째 생각은 사용자가 인덱스가없는 열 (WHERE 절)을 기준으로 필터링을 선택하면 어떻게 될까요? 사용자에게 많은 유연성을 제공함으로써 실행에 오랜 시간이 걸리는 비효율적 인 쿼리를 잠재적으로 만들 수 있습니다.
인덱스가없는 열을 필터링하면 성능이 좋지 않을 수 있지만 성능을 향상시키기 위해 할 수있는 일이 있습니까? 확실히 모든 열에 인덱스를 추가 할 수는 없습니다.
내가 쿼리 최적화를 반드시 찾고있는 것은 아니지만 캐싱과 같은 서버 조정이 있다면 생각하고 있습니까? 기본적으로 나는 모든 귀이고 성능 향상에 도움이되는 조언을 찾고 있습니다.
제안 사항?
미리 감사드립니다.
이것은 열 저장소 색인이 도움이되는 시나리오 중 하나입니다 (다음 버전까지는 사용할 수 없음). DW를 사용하지 않음으로써 어떤 의미인지 확신 할 수 없습니다. 이것은 또한 동시 데이터 수정의 대상이되는 OLTP 데이터베이스를 쿼리하는 것이므로 인덱스를 추가하는 것을 꺼리는가? –
예, 데이터베이스는 다른 많은 것들에 사용되는 OLTP 데이터베이스보다 더 자주 사용됩니다. 따라서 많은 인덱스를 추가하면 삽입/업데이트 속도가 느려집니다. – Andy0708
명백한 하드웨어 업그레이드를 제외하고는 해당 사양을 기반으로 할 수있는 일이 많습니다. 아마 성능이 빨라질 것입니다. 왜 그들은 이것을 위해 OLAP/DW를 할인 했습니까? –