TOP:LIMIT (결과행수 지정구문)이 걸려있는 쿼리에서
인덱스 키 1 2에 Order By를 줄때
하나는desc 하나는 asc와 같이 서로
상충되는 방향으로 Order By를 주면
이에 적절한 Scan 연산을 하지 못하고
fullscan 하게됨
예시로
컬럼 1에 1~10까지있고
컬럼 2에 컬럼1이 홀수인건 1~3 짝수인건 1~5까지의 도메인
을 가져서 총 40개의 레코드가 있을때
(생각하기 간편하게 레코드당 1페이지)
TOP 4에
C1 ASC, C2 DESC를 지정하면
스캔연산을 할때 어떤값 까지 읽었는지,
페이지에 몇 행이 있는지(페이지 헤더에서 행 수를 읽을 수 있음)그리고 몇행까지 읽었는지 DB스스로가 알 수 있고
인덱스 트리 아키텍처를 생각해봤을때
C1을
1부터 3-1 페이지까지 총7페이지 읽고 읽은 범위내에서
C2 DESC순으로 출력하면 될꺼 같은데
왜 지원안할까
- dc official App
글이랑 다른 내용이지만 궁금한게 있음 A테이블과 B테이블을 조인한 상태에서 검색쿼리를 질의하려는데 B테이블의 컬럼을 대상으로 질문을 해야함. A와 B는 일대다 관계임. 이 경우에는 B테이블에 우선적으로 질의를 해서 A테이블키 그룹화하고 A테이블과 조인하여 페이징처리하면 된다고 생각했는데 맞을까?
그런데 A테이블의 특정컬럼과 B테이블의 특정 컬럼을 동시에 검색해야한다고 요구사항이 와서 고민임.. A테이블에서 검색어 필터링하고 B테이블에서 검색어 필터링해서 합집합을 구한다음에 거기서 페이징을 해야하나?
질문이 B테이블에서 외래키를 기준으로 그룹화하여 집계함수 결과와 동시에 그룹화되지 않은 상태의 내역 데이터도 필요하단건가요? - dc App
결과셋이 A, B(집계), B(속성) 이렇게떨어져야되나 - dc App
집계함수결과는 필요없어요 단순히 A와 조인된 B테이블의 컬럼에 해당 검색어가 들어있어야하는데 결과는 A테이블만 필요해요
두번째 댓글의 요구사항도 결국 A테이블의 결과만 필요합니다 김치라는 키워드로 A테이블의 특정컬럼과 B테이블의 특정 컬럼에서 검색할 경우 B테이블에 있으면 외래키 대상인 A테이블의 로우를 결과에 나타내주면 되는거에요 물론 A테이블에서 검색하고 나온 로우결과도 포함해서 페이징
A B를 조인하는데 결과에는 A만표시하는데 조건이 B테이블에서 특정컬럼이 특정값을 가져야된다는거져? - dc App
네 맞습니다
뭐지 DC서버 터졌나 - dc App
뭐야 달리네 쿼리구문 포함해서 달려니까 안달리네요 - dc App
쪼개면 SELECT A.Columns FROM A T1 JOIN B T2 ON T2.FK = T1.PK - dc App
밑에 구문이 안달리네... 서버자체적으로 버그가있는건지 키워드를 블락한건지 - dc App