2010-12-13 2 views
9

나는 쿼리하는 데이터베이스가 있는데, 나는 결과 정렬을 수행 할 위치가 확실하지 않다. 지금까지 다음 옵션을 가지고있다.어디서 정렬합니까?

  • MySQL 쿼리. 목록 수준에서
  • 은 (기본적으로 JSP에서) 결과를 표시하기 전에 비교기를 사용하여 정렬되지 않은 목록

목록이 어디 더 효율적인 것 ObjectDTO으로 구성되어 정렬

  • (A LinkedList의 사용). 어떤 아이디어?

  • +2

    주 희망이 도움이 할 수 있다고 생각 인덱스가없는 경우에도 마찬가지입니다. 따라서 마지막 지점은 "기본적으로 서블릿에 있어야"하는 것이 좋습니다. – BalusC

    답변

    13

    가능하면 데이터베이스에서 정렬을 수행해야합니다.

    • 데이터베이스는 인덱스를 사용할 수 있습니다. 적합한 색인이있는 경우 정렬 된 순서로 디스크에서 결과를 읽을 수 있으므로 성능이 향상됩니다. 추가 O (n log (n)) 정렬 단계가 필요하지 않습니다.
    • 첫 번째 x 결과 만 필요하면 데이터 전송 (네트워크 전송 감소 및 적합한 색인이있는 경우 디스크 액세스 감소)도 최소화됩니다.
    +0

    삽입 순서를 유지하기 위해 LinkedList를 사용해야합니까? – Triztian

    +2

    @Triztian : 빠른 검색을 위해서는 'ArrayList'가 더 좋습니다. 'LinkedList'는 단지 제거가 더 빠릅니다 (결과를 표시하는 것이 유일한 목적 일 필요는 없습니다). – BalusC

    +0

    흠, 몰랐습니다. 목록과 컬렉션에 대한 인터페이스와 초록을 읽었습니다.하지만 때로는 혼란 스럽습니다. – Triztian

    16

    데이터베이스. 인덱스와 데이터에 대한 다른 정보를 사용하여 db는 매우 훌륭합니다.

    +0

    예. 감사합니다. – Triztian

    0

    최상의 것은 mySQL 쿼리입니다.

    A) 당신이 인덱스를 만들거나 새 행이 자동으로 삽입 될 때 (때로는 인덱스 재구성을 필요로 할 때 정렬이 발생 인덱스를 사용하는 경우

    B)을 쉽게 할 수 있지만 이것은 DB를 관리자입니다 테이블이 매우 거대한 경우에 적용됩니다.). 인덱스는 일반적으로 접근이 where 절에 사용되는 열을 포함하는 경우

    전자) 빠른

    D) 당신은

    자신에 대한 정렬을 수행하는 전체 테이블마다 읽을 필요가 없습니다 전자) 당신은 내가 DB가 정렬 최고의

    은 당신이 일반적으로 JSP 파일에 자바 코드를 방지하려는

    관련 문제