ASC(순차), DESC(역순) 정렬하기.

  • Xian
  • 2005.03.03 23:18:52
  • 4
데이터베이스에서는 쿼리문을 날려서 그 실행 결과를 정렬하는 방법을 씁니다.
예를 들어 날짜순으로 정렬할때 오래된것부터, 혹은 가장 최근 것부터 정렬할때 사용합니다.
오래된 것부터 하려면 ASC를 사용하고 최근것은 역순으로 해야 하기에 DESC를 사용합니다.

쿼리문을 예로 들어보겠습니다.

MEMBER라는 테이블에서 등록된 날짜(DATE)가 가장 최근것부터 전체를 불러옵니다.

SELECT * FROM `MEMBER` ORDER BY DATE DESC;

반대는

SELECT * FROM MEMBER ORDER BY DATE ASC; 가 되겠죠.



Mysql이나 Oracle이나 같습니다.



그리고 Oracle은 조금 다른 방법도 있더라구요.

SELECT /*+ INDEX_ASC(MEMBER MEMBER_PK) */ * FROM MEMBER;

SELECT /*+ INDEX_DESC(MEMBER MEMBER_PK) */ * FROM MEMBER;


날짜순으로 검색하는 건 아닌데 PK를 기준으로 ASC, DESC로 정렬합니다.

대략 400~500개의 레코드를 불러 보았는데 속도는 ORDER BY보다 빠른것을 확인했습니다.




팁이라면 팁이구요. 이미 알고 계시다하신다면 할말은 없네요...^^;;;

TagList

  • Doesn't exist

AttachmentFile List

  • Doesn't exist
목록으로 돌아가기
Write a comment
Comment List [4]
  • 지랄꼴깝

    학교종이 땡땡땡 어서모이자

    Comment Mar 13, 2005 Delete

  • Xian

    아.. 오라클 옵티마이저가 인덱스힌트를 사용하는 것이면 쿼리문을 order by로 주나, 인덱스힌트로 주나 같다는 말씀이시죠?
    그리고 힌트는 되도록이면 자제하고, 꼭 필요한 경우가 아니면 쓰지 말라는 것이겠죠?
    오라클은 이제 막 접해본것이라 모르는 것이 많은데....
    말씀 감사합니다...^^;

    Comment Mar 08, 2005 Delete

  • 정보균

    간만에 제로보드 사이트와서 팁보고 가는데 잘못된 정보가 있어서

    오라클 DBA로서 글을 남기고 갑니다.

    --------------------------------------
    그리고 Oracle은 조금 다른 방법도 있더라구요.

    SELECT /*+ INDEX_ASC(MEMBER MEMBER_PK) */ * FROM MEMBER;

    SELECT /*+ INDEX_DESC(MEMBER MEMBER_PK) */ * FROM MEMBER;


    날짜순으로 검색하는 건 아닌데 PK를 기준으로 ASC, DESC로 정렬합니다.

    대략 400~500개의 레코드를 불러 보았는데 속도는 ORDER BY보다 빠른것을 확인했습니다.
    --------------------

    인덱스 힌트를 이용하여 사용한것고 order by시 오라클 옵티마이저가 MEMBER MEMBER_PK
    인덱스를 이용해서 실행계획을 힌트를 이용하는것과 같이 풀렸다면은 결과는 똑같습니다.

    그리고 힌트 사용은 될수 있으면은 자제하는게 Cost Base Optimizer에게 좋습니다.

    Comment Mar 05, 2005 Delete

  • 꿀떡이당

    궁금한게 있어서 그러는데요 업로드할시에 내림차순 올림차순 그런것도 변경이 가능한가요?

    Comment Sep 12, 2007 Delete