2010-07-22 7 views
1

나는 3,000 개의 십진수 값 목록을 가지고 있으며 각각에 대해 SQL Server 데이터베이스에서 다른 십진수 값을 조회해야합니다. 현재. NET SqlClient 클래스를 사용하고 있습니다.
3,000 개의 쿼리를 만드는 것이 비효율적 인 것처럼 보이지만 몇 가지 호출로 쿼리를 결합하는 깔끔하고 효율적인 방법이 있는지 확실하지 않습니다.많은 쿼리 최적화

조회 테이블에는 현재 약 1,500,000 개의 값이 포함되어 있으며 실제로 조회해야하는 값을 제외한 모든 값을 데이터베이스에서 검색하지 않으므로 (예 : 메모리에 전체 테이블을 캐시 할 수 없음)

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

답변

2

SQL Server 2008을 사용하는 경우 테이블 값 매개 변수를 쿼리에 전달하여 값 테이블을 전달한 다음 쿼리에 참여할 수 있습니다. 다른 접근법에 대한 성능 비교를 사용한 예 (CSV & XML) : http://www.adathedev.co.uk/2010/02/sql-server-2008-table-valued-parameters.html

나는 그 곳에서 어떻게 수행되는지보고 싶습니다.

SQL Server 2008을 사용하고 있지 않다면이 기사 (XML 및 CSV)에서 비교할 수있는 다른 방법을 시도해 볼 수 있습니다. 여기서는 StackOverflow에서 "여러 값을 sproc에 전달하는 방법"에 대한 토론도 많이 있습니다. 또는 일괄 값을 임시 테이블에 대량로드 한 다음이를 조인합니다.

+0

감사합니다. 매우 유익한 답변입니다. –

1

table value parameters이 도입되었습니다. 사용자 유형 매개 변수로 define을 g 용하고 저장 프로시 듀어와 UDF (UDF와 함게 읽기 전용이어야 함)로 전달할 수 있습니다.

십진수 표를 사용하고 조회를 수행하여 필요한 데이터를 모두 하나의 쿼리로 반환하는 저장 프로 시저를 작성할 수 있습니다.

0

값이 자주 변경되지 않으면 AppFabric 분산 캐시를 변경하십시오. 그 속도를 높이는 가장 좋은 방법입니다. 내 생각에 스토어드 프로 시저로 논리를 옮기는 것이 일반적으로 확장 성을위한 최선의 방법은 아닙니다.