Tôi có một vấn đề lớn với Câu lệnh SQL trong Oracle. Tôi muốn chọn Bản ghi TOP 10 được STORAGE_DB đặt hàng không có trong danh sách từ một tuyên bố chọn khác.
Điều này hoạt động tốt cho tất cả các hồ sơ:
SELECT DISTINCT
APP_ID,
NAME,
STORAGE_GB,
HISTORY_CREATED,
TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE
FROM HISTORY WHERE
STORAGE_GB IS NOT NULL AND
APP_ID NOT IN (SELECT APP_ID
FROM HISTORY
WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009')
Nhưng khi tôi thêm
AND ROWNUM <= 10
ORDER BY STORAGE_GB DESC
Tôi đang nhận được một số loại Hồ sơ "ngẫu nhiên". Tôi nghĩ bởi vì giới hạn diễn ra trước khi đặt hàng.
Có ai có một giải pháp tốt? Vấn đề khác: Truy vấn này thực sự rất chậm (10k + hồ sơ)