2014-09-30 3 views
5

में स्वचालित अनुकूलन में शामिल हों निम्नलिखित प्रश्नों की निष्पादन गति नाटकीय रूप से अलग है। दूसरा एक पहले की तुलना में तीव्रता के आदेश को तेजी से खत्म करता है।एसक्यूएल इनरर एचएसक्यूएलडीबी

SELECT * FROM A INNER JOIN B ON A.X=B.Y WHERE B.Z=1 
SELECT * FROM A INNER JOIN (SELECT * FROM B) ON A.X=B.Y WHERE B.Z=1 

यह अच्छा होगा अगर कोई यह लिखता है कि यह क्यों है। डेटाबेस HSQLDBJDBC के साथ है।

अतिरिक्त जानकारी: HSQLDB का संस्करण 2.3.2 है। और कॉलम एएक्स अनुक्रमित है लेकिन कॉलम बीवाई नहीं है।

+1

क्या आप एक तीसरे संस्करण का परीक्षण कर सकते हैं: 'चुनें * एएनएक्स = बीवाई और बीजेड = 1' पर एक इंटर्नर बी बी से चुनें? –

+0

@ जोएलस्लामिन यह पहले धीमी संस्करण के समान निष्पादन समय के आसपास है। – user3726374

+0

यह इस तथ्य के कारण हो सकता है कि 'बीवाई 'अनुक्रमित नहीं है। क्या आप इस दूसरे संस्करण को आज़मा सकते हैं और मुझे बता सकते हैं कि कोई प्रदर्शन लाभ/हानि है: 'चुनें * एक इनर जॉइन से चुनें (चुनें * जहां से बीजेड = 1) एक्सएक्स = BY' –

उत्तर

1

जवाब है: indexing

कल्पना कीजिए कि मैं एक शब्दकोश है और किसी ने मुझे उस में 5000 शब्द को खोजने के लिए एक कार्य देता है। यह काम मुझे कई घंटे ले जाएगा।
लेकिन अब कल्पना करें कि यह शब्दकोश निरस्त नहीं है। इसमें इन सभी शब्दों को खोजने में मुझे सालों लगेगा।
कंप्यूटर तेज है और पहले कार्य के लिए इसे केवल मिलीसेकंड की आवश्यकता है जबकि दूसरा कार्य कई सेकंड तक रहता है।

पहली क्वेरी इतनी धीमी क्यों है?

ऐसा इसलिए है क्योंकि INNER JOIN है और यह अनइंडेक्स किए गए कॉलम पर किया जाता है।

दूसरी क्वेरी इतनी तेज़ क्यों है?

ऐसा इसलिए है क्योंकि वहां सबक्वायरी है। इस सबक्वायरी को अस्थायी तालिका में मूर्तिकला दिया गया है और सूचकांक कॉलम में शामिल होने के लिए बनाया गया है। तो आप अब अनइंडेक्स बी तालिका के साथ शामिल नहीं हो रहे हैं लेकिन अनुक्रमित अस्थायी तालिका के साथ। एचएसक्यूएलडीबी इस इंडेक्सिंग को अस्थायी तालिका पर बनाता है जिससे इसे शामिल करना आसान हो जाता है। भले ही आप स्थिति को अधिक जटिल में बदल दें (उदाहरण के लिए: A.X = B.Y + 2*B.Z) यह क्वेरी अभी भी तेज होगी। इसका मतलब है कि HSQLDB शामिल स्थिति में उपयोग की गई अभिव्यक्ति पर अनुक्रमणिका बनाता है।

+0

यह निश्चित रूप से समझ में आता है। क्या आपके पास वर्णित वर्णन के लिए शायद कोई संदर्भ है? – user3726374

संबंधित मुद्दे