2010-12-13 34 views
9

Tôi có một cơ sở dữ liệu, mà tôi truy vấn, và tôi không chắc chắn về nơi để thực hiện việc sắp xếp các kết quả, cho đến nay tôi đã có các tùy chọn sau đây.Tôi sắp xếp ở đâu?

  • Tại truy vấn MySQL.
  • Ở cấp danh sách (Sử dụng một LinkedList)
  • Phân loại một danh sách không được phân loại sử dụng bộ so sánh trước khi hiển thị các kết quả (về cơ bản trong jsp)

danh sách được sáng tác bởi ObjectDTO do đó, nơi nó sẽ hiệu quả hơn. Bất kỳ ý tưởng?

+2

Lưu ý rằng bạn thường muốn tránh mã Java trong tệp JSP. Vì vậy, điểm cuối cùng có thể tốt hơn là "về cơ bản trong servlet". – BalusC

Trả lời

13

Bạn nên thực hiện sắp xếp trong cơ sở dữ liệu nếu có thể.

  • Cơ sở dữ liệu có thể sử dụng chỉ mục. Nếu có một chỉ số phù hợp có sẵn thì kết quả có thể được đọc từ đĩa đã có trong thứ tự sắp xếp, dẫn đến tăng hiệu suất - không cần thêm bước phân loại O (n log (n)).
  • Nếu bạn chỉ cần x kết quả đầu tiên, bạn cũng giảm thiểu tối đa việc truyền dữ liệu (cả giảm chuyển mạng và cũng giảm quyền truy cập đĩa nếu có chỉ mục phù hợp).
+0

Vì vậy, tôi có nên sử dụng LinkedList để giữ thứ tự chèn không? – Triztian

+2

@Triztian: một 'ArrayList' là tốt hơn để truy xuất nhanh. Một 'LinkedList' chỉ nhanh hơn để loại bỏ (mà bạn không cần nếu mục đích duy nhất là hiển thị kết quả). – BalusC

+0

Hmm, không biết điều đó, tôi đã đọc Giao diện và tóm tắt về danh sách và bộ sưu tập nhưng đôi khi nó khó hiểu – Triztian

16

Cơ sở dữ liệu. Sử dụng các chỉ mục và các thông tin khác về dữ liệu, db là rất tốt ở đây.

+0

Có, tôi đã quyết định rằng cách tôi sẽ làm điều đó cảm ơn. – Triztian

0

Tốt nhất là truy vấn mySQL.

a) Nó rất dễ dàng để làm

b) Nếu bạn sử dụng một chỉ mục các loại xảy ra khi chỉ số được tạo ra hoặc khi các hàng mới được chèn tự động (đôi khi một chỉ số cần có một tổ chức lại nhưng đây là một quản trị viên db Điều này áp dụng nếu bảng là rất lớn.).

e) Nếu chỉ số bao gồm các cột được sử dụng trong mệnh đề where truy cập nói chung là nhanh hơn

d) Bạn không cần phải đọc toàn bộ bảng mỗi thời gian để làm các loại cho chính mình

e) Ngay cả khi bạn không có chỉ mục Tôi tin rằng DB có thể thực hiện việc phân loại tốt nhất

Hy vọng điều này sẽ giúp

Các vấn đề liên quan