본문 바로가기

DB/SQL

(2)
[SQL] 페이징을 위한 ROWNUM과 인라인뷰(@Oracle) ROWNUM - Oracle에서는 페이지 처리를 위해서 ROWNUM이라는 특별한 키워드를 사용해서 데이터에 순번을 붙여 사용한다. - ROWNUM은 SQL이 실행된 결과에 넘버링을 해준다고 생각하면 된다. - 모든 SELECT문에는 ROWNUM이라는 변수를 이용해서 해당 데이터가 몇 번째로 나오는지 확인할 수 있다. - ROWNUM은 실제 데이터가 아니라 테이블에서 데이터를 추출한 후에 처리되는 변수이므로 상황에 따라서 그 값이 매번 달라질 수 있다. - SQL에 아무런 조건이 없기 때문에 데이터는 테이블에 섞여 있는 상태 그대로 나오게 된다.(테이블을 FULL 스캔한 것과 동일하다.) - ROWNUM은 테이블에 존재하지 않고, 테이블에서 가져온 데이터를 이용해서 번호를 매기는 방식으로 결과는 테이블에서..
[SQL] ORDER BY와 INDEX (@Oracle) ORDER BY의 문제 - 데이터베이스를 이용할 때 웹이나 애플리케이션에 가장 신경 쓰는 부분은 1) 빠르게 처리되는 것 2) 필요한 양만큼만 데이터를 가져오는 것 이다. 예를 들어, 거의 모든 웹페이지에서 페이징을 하는 이유는 최소한의 필요한 데이터만을 가져와서 빠르게 화면에 보여주기 위함이다. 만일 수백 만개의 데이터를 매번 정렬을 해야하는 상황에서 사용자는 정렬된 결과를 볼 때까지 오랜 시간을 기다려야만 하고, 특히 웹에서 동시에 여러 명의 사용자가 정렬이 필요한 데이터를 요청하게 된다면 시스템에는 많은 부하가 걸리게 되고 연결 가능한 Connection의 갯수가 점점 줄어서 서비스가 멈추는 상황을 초래하게 될 것이다. 빠르게 동작하는 SQL을 위해서는 먼저 ORDER BY를 이용하는 작업을 가능하..