Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

क्या स्पष्ट एएनएसआई जॉइन बनाम निहित जॉइन के उपयोग पर ओरेकल की आधिकारिक सिफारिश है?

एएनएसआई के साथ मुद्दों पर ओरेकल सपोर्ट साइट से कई नोट्स हैं जो ऑरैकल सिंटैक्स का उपयोग करने के लिए वर्कअराउंड के साथ सिंटैक्स में शामिल होते हैं।

बग 5188321 गलत परिणाम (कोई पंक्तियाँ नहीं) या ANSI बाहरी जुड़ाव से ORA-1445

Versions affected: Versions >= 9.2.0.1 but < 11 

Description
Wrong results or an ORA-1445 can be returned with a query involving a 
 very large select list count when ANSI OUTER JOIN syntax is used.


Workaround
  Use native oracle outer join syntax 
 or 
  reduce the select list count.

बग 5368296 एएनएसआई एसक्यूएल में शामिल हों, अस्पष्ट कॉलम के लिए ओआरए-918 की रिपोर्ट नहीं कर सकते हैं

Versions affected: Versions < 11

Description

****
Note: This fix introduces the problem described in bug 7318276
      One off fixes for that bug address the issue here also.
****      

ORA-918 is not reported for an ambiguous column in a query 
involving an ANSI join of more than 2 tables/objects. 

eg:
 -- 2 table join, returns ORA-918
 SELECT  empno 
 FROM emp a JOIN emp b  on a.empno = b.empno; 

 -- 3 table join does not report ORA-918 when it should ...
 SELECT  empno
 FROM emp a JOIN emp b on a.empno = b.empno
            JOIN emp c on a.empno = c.empno;

बग 7670135 एएनएसआई जॉइन को संकलित करने में लंबा पार्स समय

 Versions affected: Versions BELOW 11.2 

Description

A query having ANSI join(s) may take noticeable time during query compilation,
especially if the query includes an NVL() function.

Workaround:
 Use ORACLE join instead of ANSI join

Oracle प्रेस से - Oracle OCP 11g सभी एक परीक्षा मार्गदर्शिका में

और Asktom से (जो गैर प्रतिबद्ध है)

 Historically there have been bugs related to ANSI syntax, in fact even the 
 10.2.0.4 projected issues list includes 10 bugs/issues related to ANSI syntax.

 In the past I've encountered some of these bugs myself, and have continued to use 
 and advocate the "traditional" Oracle style.

 I'd like to know if you feel that the implementation of ANSI syntax is now equally    
 robust compared  to the traditional syntax.

 Followup   February 19, 2008 - 5pm Central time zone:
 unfortunately, there are bugs in non-ansi joins too, probably more than 10 in fact.

 I personally do not use the new syntax (except in the rare case of a full outer join, 
 a truly rare beast to encounter). I have no comment on it really. 

ओरेकल के प्लस (+) नोटेशन और एएनएसआई जॉइन नोटेशन के बीच एक ही विषय पर पहले के प्रश्न को भी देखें?

मुझे यह कथन एक दस्तावेज़ में भी मिला है लेकिन इसका कोई संदर्भ नहीं है कि यह कहाँ से आया है

"Oracle 9i से शुरू होकर, Oracle अनुशंसा करता है कि SQL डेवलपर Oracle मालिकाना (+) सिंटैक्स के बजाय ANSI जॉइन सिंटैक्स का उपयोग करें। इस अनुशंसा के कई कारण हैं, जिनमें शामिल हैं:

• अलग करने और पढ़ने में आसान (जॉइन बनाम प्रतिबंध कोड को मिलाए बिना) • जॉइन कोड को सही ढंग से बनाना आसान (विशेषकर "बाहरी" जॉइन के मामले में) • पोर्टेबल सिंटैक्स अन्य सभी एएनएसआई अनुपालन डेटाबेस, जैसे एमएस एसक्यूएल सर्वर पर काम करेगा। , DB2, MySQL, PostgreSQL, et al• चूंकि यह सार्वभौमिक रूप से स्वीकृत मानक है, यह भविष्य के सभी डेटाबेस और तीसरे पक्ष के विक्रेताओं के टूल के लिए सामान्य लक्ष्य है • मालिकाना Oracle आउटर-जॉइन (+) सिंटैक्स का उपयोग केवल एक दिशा में किया जा सकता है एक समय, यह एक पूर्ण बाहरी जुड़ाव नहीं कर सकता है • साथ ही Oracle दस्तावेज़ीकरण से ये अतिरिक्त सीमाएँ:o (+) ऑपरेटर को केवल एक कॉलम पर लागू किया जा सकता है, एक मनमाना अभिव्यक्ति के लिए नहीं। हालांकि, एक मनमाना अभिव्यक्ति में (+) ऑपरेटर के साथ चिह्नित एक या अधिक कॉलम हो सकते हैं। ओ (+) ऑपरेटर वाली एक शर्त को ओआर लॉजिकल ऑपरेटर का उपयोग करके किसी अन्य शर्त के साथ जोड़ा नहीं जा सकता है। एक शर्त इन तुलना स्थिति का उपयोग नहीं कर सकती है एक अभिव्यक्ति के साथ (+) ऑपरेटर के साथ चिह्नित कॉलम की तुलना करें। एक शर्त किसी उप-क्वेरी के साथ (+) ऑपरेटर के साथ चिह्नित किसी भी कॉलम की तुलना नहीं कर सकती है।"

इस प्रकार एएनएसआई सिंटैक्स में शामिल होने का समय आ गया है - और 21वीं सदी में प्रवेश करने का



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीएल/एसक्यूएल में अगर स्टेटमेंट कंडीशन में स्केलर सबक्वेरी

  2. लेनदेन डेटा को समय और स्थिति कॉलम से मिनट प्रति स्थिति मान में सामान्य करें

  3. Oracle डेटाबेस में जुड़े हुए उपयोगकर्ताओं को छोड़ना

  4. प्रति समूह एक कॉलम के अधिकतम मान के साथ वापसी पंक्ति

  5. मैं Oracle Sql डेवलपर में व्याख्या योजना कैसे देख सकता हूँ?