SQL Server 2005를 사용하여 다음 시나리오에서 두 테이블을 조인하는 가장 효율적인 방법은 무엇입니까?SQL Server 2005 - 테이블 열의 기준을 기반으로 한 조인
각 테이블의 레코드 수는 약 200,000 개 정도로 상당히 클 수 있습니다.
내가 현재이 작업을 수행 할 수있는 유일한 방법은 커서와 각 항목에 대한 동적 SQL을 사용하여 매우 비효율적 일 것이라고 생각하는 것입니다.
테이블이 두 개 있습니다. PERSON
테이블과 SEARCHITEMS
테이블입니다. SEARCHITEMS
테이블에는 레코드를 PERSON
테이블과 일치시킬 때 사용할 간단한 조건이있는 열이 있습니다. 조건은 PERSON
테이블의 모든 열을 참조 할 수 있습니다. 예를 들어
주어진 다음의 표 :
PERSON
테이블
PERSONID FIRSTNAME LASTNAME GENDER AGE ... VARIOUS OTHER COLUMNS
1 Fred Bloggs M 16
....
200000 Steve Smith M 18
SEARCHITEMS
테이블 같은 것을 포함해야
ITEMID DESCRIPTION SEARCHCRITERIA
1 Males GENDER = 'M'
2 Aged 16 AGE=16
3 Some Statistic {OTHERCOLUMN >= SOMEVALUE AND OTHERCOLUMN < SOMEVALUE}
....
200000 Males Aged 16 GENDER = 'M' AND AGE = 16
RESULTS
테이블 :
ITEMID DESCRIPTION PERSONID LASTNAME
1 Males 1 Bloggs
1 Males 200000 Smith
2 Aged 16 1 Bloggs
....
200000 Males Aged 16 1 Bloggs
을 691,363,210
그냥
INSERT INTO RESULTSTABLE
SELECT *
FROM PERSON P
LEFT JOIN SEARCHITEMS SI ON (APPLY SI.SEARCHCRITERIA TO P)
같은 것을 할 수있을 것이 좋을 것이다 그러나 나는이 작품을 만드는 방법을 볼 수 없습니다. 어떤 도움이나 아이디어라도 감사합니다.
정확히 어떤 문제를 해결하려고합니까? 이 2 개의 테이블을 조인하기위한 요구 사항입니까? – Ali
요구 사항은 일치하는 레코드의 결과를 결과 테이블에 삽입하는 것입니다. 꼭 필요하지는 않습니다. 조인을 효율적으로 사용해야합니다. 결과적으로 조인이 궁극적으로 가장 효율적이라는 것을 알 수 있습니다. –
나는 사람과 검색 항목 사이에 중간 테이블을 가져야한다고 생각한다. 왜냐하면 현재 결과 테이블의 크기가 비례하여 폭발하기 때문이다. 나는 그것에 대해 생각해 보았고 모든 검색 기준 조합을 알지 못하면 커서를 사용하여 더 나은 해결책을 찾지 못했습니다. – Ali