Nếu đây sẽ là một yêu cầu trong thời gian ngắn, sử dụng một tuyên bố như vậy. Tuy nhiên, nếu bạn nghĩ rằng nó có thể được khoảng một thời gian, và nó sẽ luôn luôn được orange/apple/strawberry
thứ tự (hoặc thậm chí nếu không - xem dưới đây), bạn có thể muốn suy nghĩ về hy sinh một số không gian đĩa để đạt được một số tốc độ.
Tạo cột mới trong bảng của bạn được gọi là or_ap_st
và sử dụng trình kích hoạt chèn/cập nhật để điền vào số 1, 2 hoặc 3, tùy thuộc vào giá trị của cột trái cây của bạn. Sau đó, chỉ mục trên đó.
Vì thời gian duy nhất dữ liệu trong cột đó sẽ thay đổi là khi hàng thay đổi, đó là thời điểm tốt nhất để thực hiện. Chi phí sau đó sẽ được phát sinh trên một số lượng nhỏ các bài viết thay vì một số lượng lớn các lần đọc, do đó được phân bổ theo các tuyên bố select
.
truy vấn của bạn sau đó sẽ là một blindingly nhanh:
select field1, field2 from table1
order by or_ap_st;
không có chức năng cho mỗi hàng giết hiệu suất.
Và, nếu bạn muốn có các đơn hàng sắp xếp khác, tốt, đó là lý do tôi gọi cột or_ap_st
. Bạn có thể thêm bao nhiêu cột sắp xếp khác nếu cần.
Hah! Giống như tôi sẽ tin tưởng bất kỳ SQL đến từ một ai đó gọi là LittleBobbyTables :-) – paxdiablo
@pax - :-) –
LittleBobbyTables
+1 cho tùy chọn bảng, luôn linh hoạt hơn – RichardTheKiwi