목록spring oracle (5)
[꼼꼼한 개발자] 꼼코더
🔍 페이지 번호 1,2의 데이터 한 페이지당 10개의 데이터를 출력한다고 가정하고 ROWNUM 조건을 WHERE 구문에 추가하여 다음과 같이 작성할 수 있다. /* tbl_board 테이블을 bno의 역순으로 접근 후 한 페이지당 10개의 데이터를 출력(힌트 사용) / select /+ INDEX_DESC(tbl_board pk_board) */ rownum rn, bno, title, content from tbl_board where rownum 10 and rownum 10 데이터들을 찾게 된다. 문제는 TBL_BOARD에 처음으로 나오는 ROWNUM의 값이 1이라는 것이다. TBL_BOARD에서 데이터를 찾고 ROWNUM 값이 1이 된 데이터는 where 조건에 의해서 무효화된다.( > 10) 이..
🛼 ROWNUM과 인라인뷰페이징 처리를 위해 역순으로 게시물의 목록 조회를 성공했다면이제는 전체가 아닌 필요한 만큼의 데이터를 가져오는 방식을 알아보자 ROWNUM이라는 특별한 키워드를 사용하여 데이터에 순번을 붙여 사용해 보자 👇🏻 ROWNUMROWNUM은 SQL 실행결과에 넘버링을 해주는 것이다.쉽게 말 해 데이터 수집 순위를 매기는 것!(테이블에서 먼저 ACCESS 되는 순으로 매겨짐)모든 SELECT문에 적용 가능하다실제데이터가 아니므로 상황에 따라 매번 값이 달라질 수 있다.👨🏻💻 ROWNUM 실습우선 아무 조건을 적용하지 않고 tbl_board 테이블에 접근하고각 데이터에 ROWNUM을 적용하면 다음과 같이 작성할 수 있다.SQL에 아무런 조건이 없으니 데이터는 테이블에 섞여있는 ..
❗️ 인덱스와 오라클 힌트(hint) 웹 페이지의 목록은 주로 시간의 역순으로 정렬된 결과를 보여준다. 최신 데이터가 가장 중요하기 때문이다. (개발자 입장에서는 정렬을 하지 않는 select문을 실행하고 싶지만 말이다..) 오라클은 select문을 전달할 때 ‘힌트(hint)’라는 것을 사용할 수 있다. 말 그대로 데이터베이스에 ‘지금 내가 전달한 select문을 이렇게 실행해 주면 좋겠습니다.’라는 말이다 특이하게도 select문을 어떻게 처리하는지에 대한 이야기일 뿐이므로 힌트 구문에서 에러가 나도 전혀 SQL 실행에 지장을 주지 않는다. 따라서 힌트를 이용하여 select문 작성 시 실행 계획을 통하여 개발자가 원하는 대로 SQL이 실행되는지 확인하는 습관이 필요하다. 가장 많이 사용하는 힌트는 ..
🔑 order by 보다는 인덱스 이전에 ‘데이터가 많은 상태에 정렬 작업은 문제가 된다.’를 알아봤다. 이 문제를 해결하려면 일반적으로 ‘인덱스(index)를 이용한 정렬 생략 방법’이 있다. 결론부터 말하자면 ‘인덱스’라는 존재가 이미 정렬된 구조이므로 이를 이용해서 별도의 정렬을 하지 않는 방법을 일컫는다. 자세한 건 뒤에서 살펴보고, 우선 위와 같은 상황에서 다음과 같은 SQL을 실행해 보자. 결과를 보면 전체 테이블을 조사하고 정렬하는 것은 이전과 차이가 없이 동일하지만 실행시간의 차이는 매우 크게 확인할 수 있다. 가장 중요한 점은 SQL의 실행 시간이 거의 0초로 나온다는 점이다 실행 계획은 아래와 같다. 주의해서 봐야 하는 부분은 1) SORT를 하지 않았다 2) TBL_BOARD를 바로 ..
📄 오라클데이터 베이스 페이징 처리현재 가장 미숙한 부분은 목록 페이지이다.기본적으로 페이징(pagination) 처리가 필요하다.(수많은 데이터를 한 페이지에 보여주면, 처리 성능에 영향을 미치기 때문) 페이징 처리는 크게 ‘번호’를 이용하거나 ‘계속보기’의 형태로 구현된다. 번호를 이용한 페이징 작업 : 과거 웹 초기부터 이어오던 방식계속보기를 이용한 페이직 작업 : Ajax와 앱이 등장한 이후에 ‘무한 스크롤’이나 ‘더 보기’와 같은 형태로 구현. 예제는 전통적인 번호를 이용하여 처리한다. 오라클에서 페이징 처리하는 것은 MySQL에 비해 추가적인 지식이 필요하므로이에 대한 학습을 선행해야 한다.🚨 order by의 문제 데이터의 양이 많을수록 프로그램을 이용해 정렬이라는 작업을 사용한다하지만 ..