मुझे Oracle में SQL कथन के साथ एक बड़ी समस्या है। मैं STORAGE_DB द्वारा दिए गए शीर्ष 10 रिकॉर्ड्स का चयन करना चाहता हूं, जो अन्य चयनित विवरण से सूची में नहीं हैं।
यह सभी रिकॉर्ड के लिए ठीक काम करता है:
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')
लेकिन जब मैं जोड़ रहा हूं
AND ROWNUM <= 10
ORDER BY STORAGE_GB DESC
मुझे किसी प्रकार का "यादृच्छिक" रिकॉर्ड मिल रहा है। मुझे लगता है कि आदेश से पहले सीमा लागू होती है।
क्या किसी के पास कोई अच्छा उपाय है? दूसरी समस्या: यह क्वेरी वास्तव में धीमी है (10k + रिकॉर्ड)