안녕하세요...
한참을 고민하다가 이렇게 글을 올립니다.
다름이 아니라 아래와 테이블이 있습니다.
TABLE PRODUCT (상품정보)
ID : 상품번호 PRIMARY KEY
TITLE : 제목
ID TITLE
1 홍길동
2 유관순
3 김유신
TABLE CATEGORY (상품 카테고리 정보, 조회수)
NUM : 번호
CAT : 카테고리 번호
ID : 상품정보
COUNT : 조회수
NUM CAT ID COUNT
1 AA 1 23
2 BB 1 456
3 AA 2 12
4 CC 3 98
5 AA 1 56
여기서 선택한 카테고리번호에 해당하는 제품들을 COUNT 순으로 중복없이 나열하고 싶습니다.
전 쿼리문을 아래와 같이 했습니다.
SELECT TOP (테이블 목록갯수) AA.ID, TITLE FROM PRODUCT AA INNER JOIN (SELECT ID, MAX(COUNT) AS COUNT FROM CATEGORY WHERE CAT = 'AA' GROUP BY ID) BB
ON AA.ID = BB.ID WHERE AA.ID NOT IN (SELECT TOP ((page-1)*테이블 목록갯수) AA.ID FROM PRODUCT AA INNER JOIN (SELECT ID, MAX(COUNT) AS COUNT FROM CATEGORY WHERE CAT = 'AA' GROUP BY ID) BB
ON AA.ID = BB.ID ORDER BY BB.COUNT ASC) ORDER BY BB.COUNT ASC일단 위와 같은 쿼리문 성는면에서 맞는지요?? 틀리다면 쿼리문을 어떻게 해야하느지요??
또한 저러한 구조의 테이블은 인덱스를 어떻게 주는게 적절한지 궁금합니다.
참고로 PRODUCT 테이블은 백만건 정도 되구요... CATEGORY 테이블은 몇백만건입니다.
주위에 물어볼사람이 아무도 없습니다. ㅠ.ㅠ 답변주시면 넘 감사드립니다. ㅠ.ㅠ
|