डिफ़ॉल्ट रूप से Oracle में सभी अनुक्रमणिकाएँ असंबद्ध हैं। Oracle में केवल क्लस्टर इंडेक्स इंडेक्स-ऑर्गनाइज्ड टेबल (IOT) प्राइमरी की इंडेक्स हैं।
IOT_TYPE
. को देखकर आप यह निर्धारित कर सकते हैं कि तालिका IOT है या नहीं ALL_TABLES
में कॉलम देखें (इसकी प्राथमिक कुंजी ALL_CONSTRAINTS
को क्वेरी करके निर्धारित की जा सकती है और ALL_CONS_COLUMNS
दृश्य)।
यहां कुछ कारण दिए गए हैं कि क्यों आपकी क्वेरी आदेशित पंक्तियों को वापस कर सकती है:
- आपकी तालिका अनुक्रमणिका-संगठित और
FIELD
. है इसकी प्राथमिक कुंजी का प्रमुख भाग है। - आपकी तालिका ढेर-व्यवस्थित है लेकिन पंक्तियों को
FIELD
द्वारा क्रमित किया गया है , यह कभी-कभी बढ़ते पहचान कॉलम पर होता है।
केस 2 केवल संयोग से क्रमबद्ध पंक्तियों को लौटाएगा। इंसर्ट्स के ऑर्डर की गारंटी नहीं है, इसके अलावा Oracle पुराने ब्लॉक्स का पुन:उपयोग करने के लिए स्वतंत्र है यदि भविष्य में कुछ के पास उपलब्ध स्थान होता है, जिससे नाजुक ऑर्डरिंग बाधित होती है।
केस 1 ज्यादातर समय ऑर्डर की गई पंक्तियों को लौटाएगा, हालांकि आपको इस पर भरोसा नहीं करना चाहिए क्योंकि लौटाई गई पंक्तियों का क्रम एक्सेस पथ के एल्गोरिदम पर निर्भर करता है जो भविष्य में बदल सकता है (या यदि आप डीबी पैरामीटर बदलते हैं, विशेष रूप से समांतरता )।
दोनों ही मामलों में यदि आप ऑर्डर की गई पंक्तियाँ चाहते हैं तो आपको क्लॉज़ द्वारा ऑर्डर देना चाहिए:
SELECT field
FROM (SELECT field
FROM TABLE
ORDER BY field)
WHERE rownum <= 100;