Q&A

  • 오라클 SQL문에서 일부만 select하고자 할
select * from table1 where <조건문> order by aaa

의 결과값으로 10만개가 검색되었다고 했을 때, 이것을 모두 한꺼번에 받지 않고, 일부씩 끊어서 분할해서 처리하고 싶은데요, 예를 들어

select first 1000 skip 2000 * from table1 where <조건문> order by aaa    
                <= Firebird 2.0 에선 이러한 문법이 제공된다고 하더군요.

라는 문장으로 처음 2000개의 레코드를 건너뛰어서 1000개의 레코드만을 dataset에 넣으려고 합니다.

오라클에서는 문법이 어떻게 되는지요?

참고로, key 필드는 한개가 아니라 여러 필드로 구성되어 있기에 필드의 조건들 만으로 레코드의 갯수를 정할 수가 없을 것 같습니다.
7  COMMENTS
  • Profile
    김도형 2005.10.22 03:08


    이렇게 써보시면 어떨까요...
    허접하지만 도움이 되셨으면 합니다.

    SELECT *
      FROM ( SELECT ROWNUM AS RECNO, <필드명1>, <필드명2>, ... , <필드명n>
               FROM  테이블명
                WHERE <조건문>
                ORDER BY <정렬필드> )
    WHERE RECNO BETWEEN <시작행번호> AND <시작행번호 + 1000>

    ROWNUM이란 함수를 사용하였습니다. ORDER BY를 사용하게 되면 결과를 보시면 알겠지만 순서대로 ROWNUM을 부여하지는 않습니다. 만약 순서대로 정렬을 하려면 테이블을 아래와같이 한번더 하심이
    그리고 ROWNUM을 가지고 2000번 행 부터 3000번 까지 가져오면 되지 않을까 싶네엽...
    그럼 ....

    SELECT *
      FROM ( SELECT ROWNUM AS RECNO, <필드명1>, <필드명2>, ... , <필드명n>
               FROM  (SELECT <필드명1>, <필드명2>, ... , <필드명n> FROM 테이블명
                           WHERE <조건문>
                            ORDER BY <정렬필드> )
               )
    WHERE RECNO BETWEEN <시작행번호> AND <시작행번호 + 1000>
  • Profile
    토니 2005.10.22 07:53
    진정 감사합니다. ^^

  • Profile
    성더기 2005.11.11 20:47
    오라클 페이징은 위에 모영철님 말씀처럼 처리합니다만
    쿼링하는 속도가 엄청나게 느려집니다
    1000건 정도만 되도 7초이상 걸립니다..
    인덱싱을 정말 잘하지 않으면 쓰기가 힘들더라구요

    그래서 저는 잔머리를 굴렸습니다
    정말 필요한 데이터만 화면에 뿌려주고 그외 데이터는 검색으로 처리하도록이요
    참고하시길 바랍니다
  • Profile
    모영철 2005.10.22 02:44
    Rownum 이란게 있습니다.

    근데 이것이 SQL의 형태에 따라 생각한것처럼

    가장 상위에서 부터 1 부터 시작하지 않을때도 있거든요..

    select문에 rownum이라고 넣고 확인하시는 작업이 필요 하겠네요.

    where rownum < 1001

    where (rownum > 1000 and rownum 2001)

    이렇게 하면 되지 않을지.. 그런데 아마 속도가 줄거나 하진 않았던걸로 기억합니다.

    프로그램에서 처리할지 쿼리로 처리할지는 봐가면서 해야겠네요..

    p.s 말머리 [질문] 넣어주세요....^^ 안쓰면 지워질지도 모르니깐...^^

  • Profile
    토니 2005.10.22 05:14
    .
  • Profile
    최용일 2005.10.22 02:46
    ㅠㅠ

    지운적은 한번도 없지만... 매번 [질문] 넣는라고 고생합니다... ㅠㅠ

    저 생각해주신분은 모영철님밖에 없는듯... ㅋㅋ

  • Profile
    모영철 2005.10.22 03:40
    가끔 안달려 있는 제목이 금방 달리는걸 봤는데..

    게시판관리에 열의를 쏟으시네요.. 일하시느라 힘드신것도 많으실텐데

    답변도 많이 달아주시고..

    왠지 감동이 밀려드네요..~~

    제가 다 감사드리고 싶어집니다.^^