수십, 수백만 개의 데이터를 리스트할 때, order by를 사용하게되면 각각의 데이터를 방문하며 소팅(sorting)하게 되면서 엄청난 성능저하가 일어나게 된다.
이 때 인덱스 칼럼을 지정해서 pk보드로 만들어둔다면 이미 정렬되어있는 인덱스를 통해 성능저하 없이 데이터를 정렬할 수 있게된다.
예시
select /*INDEX_DESC(tbl_board pk_board)*/ * from tbl_board where bno > 0
pk_board는 테이블 생성시 제약조건으로 지정한것으로 tbl_board를 pk_board의 내림차순으로 정렬하는 방식으로 tbl_board를 조회하게된다.
여기서 /* */ 내부값은 오라클에서 사용하는 '힌트'로, select문을 처리하는 방법에대해 기술을 하며 이에따라 sql이 실행되게된다.
여기서 힌트는 잘못 작성되더라도 무시되고 별도의 에러가 발생하지는 않는다.
FULL 힌트
테이블 전체를 스캔할것을 명시하는 힌트이다.
예: select /*FULL(tbl_board)*/ from tbl_board order by bno desc;
INDEX_ASC, INDEX_DESC 힌트
목록 페이지에서 가장 많이 사용하는 힌트로, 주어진 인덱스를 (위에서 pk_board) 순서대로 또는 역순으로 정렬할 수 있다.
예: select /*INDEX_DESC(tbl_board pk_board)*/ * from tbl_board where bno > 0
위와같이 사용하게되면 Order by를 사용하지 않고도 테이블을 내림 또는 오름차순 정렬한채 조회할 수 있다.
'컴퓨터과학 > SQL' 카테고리의 다른 글
AWS DB 인스턴스 MySQL 시간설정 (0) | 2021.08.03 |
---|