본문 바로가기
카테고리 없음

게시판 속도향상을 위한 order by 의 대체

by 휘루걸음 2011. 8. 16.
728x90
반응형

SQL의 ORDER BY는 쿼리의 결과를 정렬하는 데 사용됩니다. 대부분의 경우, 적절한 인덱스를 사용하여 쿼리를 최적화할 수 있습니다. 몇 가지 팁을 제공해보겠습니다:

  1. 인덱스 활용:
    • ORDER BY에서 사용되는 열에 인덱스를 생성하면 정렬 속도를 향상시킬 수 있습니다. 자주 사용되는 열에 대해 인덱스를 생성해 보세요.
    • 인덱스는 쿼리 성능을 향상시키지만, 너무 많은 인덱스는 데이터 삽입, 수정, 삭제에 영향을 줄 수 있습니다. 적절한 인덱스를 선택해야 합니다.
  2. 부분 인덱스:
    • 필요한 데이터만 인덱싱하는 부분 인덱스를 사용할 수 있습니다. 예를 들어, 특정 조건에 대한 필터링이 필요한 경우 해당 조건에 대한 인덱스를 만들면 ORDER BY를 통해 필요한 데이터만 정렬됩니다.
  3. 정렬 방향:
    • 정렬 방향을 명시적으로 지정합니다. 예를 들어, 오름차순(ASC) 또는 내림차순(DESC)으로 명확히 지정하여 정렬 속도를 향상시킬 수 있습니다.
  4. 정렬 열 최적화:
    • 가능하면 정렬에 필요한 최소한의 열만 사용하세요. 불필요한 열을 정렬하는 것은 성능에 영향을 줄 수 있습니다.
  5. 파티션:
    • 대규모 데이터베이스에서 파티션을 사용하면 정렬 속도를 향상시킬 수 있습니다. 특히, 파티션 키가 ORDER BY절과 일치하는 경우 유용합니다.
  6. 쿼리 최적화:
    • 쿼리를 최적화하여 불필요한 JOIN 또는 불필요한 데이터 검색을 방지하세요. 데이터베이스의 통계 정보를 확인하고 실행 계획을 검토하여 성능을 향상시킬 수 있습니다.
  7. 쿼리 캐싱:
    • 반복 실행되는 쿼리의 경우, 쿼리 캐싱을 활용하여 데이터베이스 서버가 쿼리 결과를 캐시하고 재사용할 수 있도록 합니다.
  8. 소프트웨어 업그레이드:
    • 데이터베이스 소프트웨어의 최신 버전으로 업그레이드하여 최적화 및 성능 향상에 도움이 될 수 있습니다.

이러한 팁들은 데이터베이스 및 쿼리의 특정 상황에 따라 달라질 수 있습니다. 실제 상황에 맞게 적용해보면서 성능을 향상시킬 수 있습니다.

쿼리 성능을 높이기 위한 ORDER BY의 속도 향상을 위한 몇 가지 팁을 알려드리겠습니다:

  1. 인덱스 활용:
    • ORDER BY 절에 사용되는 열에 인덱스를 생성하여 정렬 작업을 최적화할 수 있습니다. 필요한 경우, 여러 열을 포함하는 복합 인덱스를 고려할 수도 있습니다.
  2. 적절한 인덱스 선택:
    • 쿼리가 자주 실행되는 열에 대해 인덱스를 만드는 것이 중요합니다. 인덱스를 만들 때 열의 기본 키나 고유성을 고려하는 것이 좋습니다.
  3. 쿼리 최적화:
    • 불필요한 데이터를 쿼리하지 않도록 쿼리를 최적화하세요. 필요한 열만 선택하여 데이터 검색을 최소화하세요.
  4. LIMIT 사용:
    • 결과 집합이 매우 큰 경우, ORDER BY와 함께 LIMIT 절을 사용하여 반환되는 행 수를 제한하세요. 이렇게 하면 정렬 작업에 필요한 시간을 줄일 수 있습니다.
  5. 쿼리 결과 캐시:
    • 반복 실행되는 쿼리의 경우, 데이터베이스의 캐싱 메커니즘을 활용하여 쿼리 결과를 캐시함으로써 성능을 향상시킬 수 있습니다.
  6. 하드웨어 및 서버 설정:
    • 서버의 메모리(RAM)를 적절히 할당하여 데이터베이스 작업을 최적화하세요. 쿼리 처리에 필요한 메모리를 보장함으로써 성능을 향상시킬 수 있습니다.
  7. 인덱스 및 통계 최적화:
    • 데이터베이스 통계를 확인하고, 인덱스를 재구성하거나 통계를 업데이트하여 최신 정보를 반영하세요. 이는 쿼리 실행 계획을 최적화하는 데 도움이 됩니다.
  8. 쿼리 실행 계획 분석:
    • 데이터베이스에서 제공하는 쿼리 실행 계획을 확인하여 어떻게 작동하는지 이해하고, 성능을 향상시키는 데 도움을 줄 수 있는 지점을 찾으세요.

이러한 팁들은 상황에 따라 다를 수 있으며, 실제 데이터베이스 및 쿼리 환경에 따라 최적의 방법을 찾는 것이 중요합니다. 최적화 작업은 쿼리와 데이터베이스 구조에 대한 이해와 경험이 필요한 작업입니다.

 

 

참고링크: http://blog.naver.com/autumnation?Redirect=Log&logNo=110041494153


게시판에서 리스트를 보여줄경우 seq 나 날짜로 최신글로 order by를 하게 된다

이경우 무조건 order by를 사용하지 말고 인덱스를 활용한다.

 

[적용전]

select

    필드1, 필드2, -------필드n

from

    테이블명

where

    조건들

order by

    오더필드명 desc

 

[적용후]

select

    /*+  index_desc(테이블명 인덱스명) */ 필드1, 필드2, -------필드n

from

    테이블명

where

    -- 아래와 같이 인덱스를 탈수 있도록  가짜 조건을 부여 해준다.

    --  인덱스필드 조건이 날자일경우     인덱스필드명 < to_date('99991231', 'yyyymmdd')  )

    --  인덱스필드 조건이 시퀀스나 넘버일경우  인덱스필드명 > 0

    and 기타 조건들

 

 

728x90
반응형