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

हाइबरनेट + जावा पर धीमा प्रदर्शन लेकिन तेज जब मैं उसी मूल ओरेकल क्वेरी के साथ TOAD का उपयोग करता हूं

मुझे लगता है कि इस कोड के साथ क्या हो रहा है:

SQLQuery query = session.createSQLQuery("myNamedNativeQuery");
query.setParameter(nameParameter1, value1);
query.setParameter(nameParameter2, value2);
query.uniqueResult(); 

क्या यह है:

पंक्ति 1 पर :आपके नामित मापदंडों के लिए कुछ अपेक्षित मूल्यों के आधार पर एक क्वेरी योजना बनाई जाती है।

पंक्ति 4 पर:क्वेरी को मान 1 और मान 2 के साथ निष्पादित किया जाता है, लेकिन वे मान क्वेरी योजना के लिए "अच्छे मूल्य" नहीं हैं जो कि पंक्ति 1 पर विस्तृत थी और इसलिए, डेटाबेस वास्तविक मूल्यों के लिए एक बहुत ही अनुचित योजना निष्पादित कर रहा है और यह लेता है बहुत समय।

क्यों?

HibernateSessionImpl.createSQLQuery(...) के सोर्स कोड को देखते हुए मुझे कोड की यह पंक्ति मिली:

SQLQueryImpl query = new SQLQueryImpl(
                sql,
                        this,
                        factory.getQueryPlanCache().getSQLParameterMetadata( sql )
        );

जो कॉल कर रहा है getQueryPlanCache() कुछ पैरामीटर मेटाडेटा के साथ। मुझे लगता है कि यह मेटाडेटा काफ़ी अच्छा नहीं है ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. -बैश:छोटा सा भूत:आदेश नहीं मिला oracle

  2. EF 6 और Oracle का उपयोग करते समय तालिका मौजूद नहीं है

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

  4. java.time.LocalDate.getDayOfWeek() से java.util.Calendar.get(DAY_OF_WEEK)

  5. ऑरैकल में एकाधिक पंक्तियों को लौटाने वाले एकाधिक चुनिंदा प्रश्नों के साथ एक दृश्य कैसे बनाएं?