2011-02-03 9 views
19

मैं एक तालिका का दृश्य बनाना चाहता हूं जो एक विशिष्ट मानदंड को पूरा करने वाले डेटा को हाइलाइट करेगा। उदाहरण के लिए, यदि मेरे पास पूर्णांक मानों वाला एक टेबल है, तो मैं चाहता हूं कि मेरा दृश्य उन पंक्तियों को प्रदर्शित करे जो 100 से अधिक मान रखते हैं। मुझे पता है कि तालिका पर दृश्य बनाकर इसे कैसे प्राप्त किया जाए, हालांकि दृश्य गतिशील है? मैंने इसे MySQL में परीक्षण किया है और यह सच प्रतीत होता है। लेकिन अगर मेरी तालिका में 1000 से अधिक पंक्तियां हैं, तो क्या यह कुशल है? क्या मूल तालिका में किसी भी बदलाव के लिए दृश्य अभी भी "गतिशील रूप से" अपडेट होगा?क्या MySQL दृश्य गतिशील और कुशल हैं?

+0

देखें http://stackoverflow.com/q/7922675/632951 – Pacerier

उत्तर

23

मूल रूप से, मूल रूप से 2 types of views MySQL में हैं।

  1. मर्ज दृश्य

    दृश्य के इस प्रकार मूल रूप से बस को देखने के एसक्यूएल के साथ अपने प्रश्नों को फिर से लिखता है। तो यह खुद को प्रश्न लिखने के लिए एक छोटा सा हाथ है। यह कोई वास्तविक प्रदर्शन लाभ प्रदान नहीं करता है, लेकिन जटिल जटिल प्रश्नों को लिखना आसान बनाता है और रखरखाव को आसान बनाता है (क्योंकि यदि दृश्य परिभाषा बदलती है, तो आपको दृश्य के खिलाफ 100 प्रश्नों को बदलने की आवश्यकता नहीं है, केवल एक परिभाषा)।

  2. Temptable दृश्य

    दृश्य के इस प्रकार के दृश्य की एसक्यूएल से क्वेरी के साथ एक अस्थायी तालिका बनाता है। इसमें विलय दृश्य के सभी लाभ हैं, लेकिन दृश्य तालिकाओं पर लॉक टाइम भी कम कर देता है। इसलिए अत्यधिक लोड किए गए सर्वरों पर यह काफी महत्वपूर्ण प्रदर्शन लाभ हो सकता है।

वहाँ भी "अपरिभाषित" दृश्य प्रकार (डिफ़ॉल्ट), जो चलो MySQL लेने यह क्या सोचता है कि क्वेरी के समय सबसे अच्छा प्रकार है ...

लेकिन कुछ नोट करना महत्वपूर्ण ध्यान दें, कि है MySQL के पास materialized views के लिए कोई समर्थन नहीं है। तो यह ओरेकल की तरह नहीं है जहां एक जटिल दृश्य इसके खिलाफ प्रश्नों के प्रदर्शन में उल्लेखनीय वृद्धि करेगा। विचारों के प्रश्न हमेशा MySQL में निष्पादित होते हैं।

जहां तक ​​दक्षता, MySQL में दृश्य दक्षता में वृद्धि या कमी नहीं करते हैं। प्रश्न लिखने और बनाए रखने के दौरान वे आपके जीवन को आसान बनाने के लिए हैं। मैंने सैकड़ों लाखों पंक्तियों के साथ तालिकाओं पर विचारों का उपयोग किया है, और उन्होंने ठीक काम किया है ...

+0

ठीक है, यह समझ में आता है। धन्यवाद ircmaxell! विचारों का उपयोग करके – Santiago

+1

प्रदर्शन को प्रभावित करता है - उस MySQL में नेस्टेड प्रश्नों के साथ अच्छी तरह से सामना नहीं किया जाता है - इसकी भविष्यवाणी को धक्का देने के लिए केवल सीमित क्षमताएं होती हैं। ओटीओएच यह किसी भी चयन घोंसले के साथ एक क्वेरी को अनुकूलित करने का एक बहुत अच्छा काम कर सकता है। – symcbean

+0

@ सिमकबीन: क्या आपके पास दावा करने के लिए कोई संदर्भ है? मैं इसे देखने के लिए उत्सुक होगा (वैध रूप से) ... – ircmaxell

9

mysql temp तालिकाओं पर अनुक्रमणिका का उपयोग नहीं करता है ... इसलिए यह आपके प्रदर्शन को बुरी तरह प्रभावित कर सकता है।

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