प्रौद्योगिकी साझेदारी

Mysql-सूचकाङ्क अनुप्रयोग

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

सामग्रीसूची

अनुक्रमणिका अनुप्रयोग

MySQL इत्यस्य के के अनुक्रमणिकाः सन्ति ?

सामान्यसूचकाङ्कस्य अद्वितीयसूचकाङ्कस्य च मध्ये किं भेदः अस्ति ?

समूहीकृतसूचकाङ्कस्य प्राथमिकं कुञ्जीसूचकाङ्कं कथं सेट् कर्तव्यम् प्रश्नः यदि भवान् तत् न सेट् करोति तर्हि किं भविष्यति?

अनुक्रमणिकानिर्माणार्थं वयं प्रायः कीदृशानि क्षेत्राणि चिनोमः ?

अधिकाः अनुक्रमणिकाः श्रेष्ठाः सन्ति वा ?

सूचकाङ्कस्य अनुकूलनं कथं करणीयम् (सूचकाङ्कस्य अनुकूलनं, सूचकाङ्कस्य विफलतायाः निवारणं, प्राथमिककुंजीवृद्धिः, उपसर्गसूचकाङ्कस्य अनुकूलनं)

यदि अनुक्रमणिका निर्मितं भवति तर्हि प्रश्नं कुर्वन् तस्य उपयोगः भविष्यति वा?(सूचकाङ्कस्य विफलता, अनुकूलकः व्ययस्य आधारेण निष्पादनयोजनां चयनं करोति)

यदि अहं varchar प्रकारस्य तिथिक्षेत्रं परिभाषयामि, तथा च दत्तांशेषु एकः '20230922' अस्ति, तथा च यदि अस्मिन् तिथिक्षेत्रे अनुक्रमणिका अस्ति, तर्हि यदि मम प्रश्नस्य where कण्डिशन् अस्ति यत्र time=20230922 एकल उद्धरणं विना, तर्हि... index अद्यापि प्रहारः भवति ?

MySQL इत्यस्य नवीनतमसंस्करणेन अनुक्रमणिकाविफलतायाः किमपि प्रकरणं समाधानं कृतम् अस्ति वा (Function index: function द्वारा गणितं मूल्यं अनुक्रमणं अपि कर्तुं शक्यते, index jump scan mechanism (leftmost prefix))

वामतमः मेलः सिद्धान्तः कः ?

संयुक्तसूचकाङ्कस्य स्थापनायां मया किं ध्यानं दातव्यं (अत्यन्तं विभेदितान् सुदूरवामभागे, वामतममेलनसिद्धान्तं स्थापयन्तु, परिधिप्रश्नानन्तरं अनुक्रमणिकायाः ​​उपयोगं न कुर्वन्तु)

वामतमं मेलनं सिद्धान्तप्रश्नक्रमः

सूचकाङ्कपुशडाउन इति किम् ? दत्तांशप्रश्नानां अनुकूलनार्थं MySQL5.6 इत्यस्मिन् योजितम्

यत्र a>1 तथा b=2 तथा c <3 इति अनुक्रमणिका कथं निर्मातव्या?

(A,B,C) संयुक्तसूचकाङ्कः tbn तः * चयनं कुर्वन्तु यत्र a=? तथा b (?,?) तथा c>?

संयुक्तसूचकाङ्कः कथं निर्मातव्यः यत्र a>100 तथा b=100 तथा c=123 d द्वारा क्रमेण भवन्ति?

select id, name from XX where age > 10 and name like'xx%', तत्र संयुक्तसूचकाङ्कः (नाम, आयुः) अस्ति, प्रश्नप्रक्रियायाः विषये वदामः


अनुक्रमणिका अनुप्रयोग

MySQLके अनुक्रमणिकाः सन्ति ?

अहं ज्ञातवान् यत् MySQL इत्यनेन...प्राथमिक कुञ्जीअनुक्रमणिका, अद्वितीय अनुक्रमणिका, साधारण अनुक्रमणिका, उपसर्ग अनुक्रमणिका, .संघ सूचकाङ्कएतादृशाः अनुक्रमणिकाः ।

Innodb इञ्जिनस्य आवश्यकता अस्ति यत् प्रत्येकं database table मध्ये aप्राथमिक कुञ्जीअनुक्रमणिकाअनुक्रमणिकास्तम्भमूल्यानि अनुमताः न सन्तिशून्यं मूल्यम्यथा, सारणीयां id क्षेत्रं प्राथमिकं कीलसूचकाङ्कम् अस्ति

अद्वितीय अनुक्रमणिका : १. दत्तांशस्तम्भे प्रत्येकस्य दत्तांशपङ्क्तेः विशिष्टतां सुनिश्चितं कुर्वन्तु, परन्तु शून्यमूल्यानि अनुमन्यताम् ।

तदायेषां क्षेत्राणां बहुधा पृष्टं भवति, तेषां कृते वयम् अस्य क्षेत्रस्य कृते सामान्यं अनुक्रमणिकां निर्मातुम् अर्हति ।यदि बहुक्षेत्राणि सन्ति तर्हि भवन्तः निर्मातुं विचारयितुं शक्नुवन्तिसंघ सूचकाङ्क,उपयुञ्जताम्‌अनुक्रमणिका कवरेजविशेषताः प्रश्नदक्षतां वर्धयन्ति ।

दीर्घपाठस्य, स्ट्रिंग् इत्यादीनां प्रकारस्य क्षेत्राणां कृते, यथा लेखस्य शीर्षकं, उत्पादनाम इत्यादीनां कृते वयं केवलं एतेषां क्षेत्राणां उपसर्गभागस्य अनुक्रमणं कर्तुं शक्नुमः अर्थात्अनुक्रमणिकायाः ​​भण्डारणस्थानं न्यूनीकर्तुं उपसर्गसूचकाङ्कं रचयन्तु ।

सामान्यसूचकाङ्कस्य अद्वितीयसूचकाङ्कस्य च मध्ये किं भेदः अस्ति ?

  • एकं मूल्यं पृच्छन् अद्वितीयः अनुक्रमणिका किञ्चित् द्रुततरः भवितुम् अर्हति यतः प्रथमं मेलनं ज्ञात्वा अन्वेषणं समाप्तुं शक्नोति ।

  • इन्सर्ट् तथा अपडेट् क्रियाणां कृते सामान्यसूचकाङ्कः किञ्चित् द्रुततरः भवितुम् अर्हति यतः तस्य विशिष्टतापरीक्षायाः आवश्यकता नास्ति ।

  1. साधारणसूचकाङ्कस्तम्भानां मूल्यानि पुनरावृत्तिः कर्तुं शक्यते, परन्तु अद्वितीयसूचकाङ्कस्तम्भानां मूल्यानि अद्वितीयाः भवितुमर्हन्ति यदा वयं पुनरावृत्तिमूल्यं अद्वितीयसूचकाङ्के सम्मिलितं कुर्मः तदा विशिष्टताप्रतिबन्धस्य कारणेन त्रुटिः निवेदिता भविष्यति

  2. अहं चिंतयामिसाधारणसूचकाङ्कस्य अद्यतनप्रदर्शनं श्रेष्ठं भविष्यति, यतः यदा साधारणसूचकाङ्कः अद्यतनः भवति, यदि अद्यतनदत्तांशपृष्ठं न भवतिस्मृति यदि एवम् अस्ति तर्हि भवान् प्रत्यक्षतया परिवर्तनबफरमध्ये अद्यतनक्रियां संग्रहीतुं शक्नोति, अद्यतनक्रिया च सम्पन्नं भविष्यति । (विशिष्टतापरीक्षा आवश्यकी नास्ति)

  3. किन्तु,अद्वितीयसूचकाङ्कस्य अद्वितीयबाधाः आवश्यकाः सन्ति यदि अद्यतनं दत्तांशपृष्ठं...स्मृतियदि एवम् अस्ति तर्हि भवद्भिः डिस्कतः स्मृतिपर्यन्तं तत्सम्बद्धं दत्तांशपृष्ठं पठितव्यं यत् विग्रहः अस्ति वा इति निर्धारयितुं शक्यते ।IOअभिगमः।

  4. यतः साधारणसूचकाङ्काः परिवर्तनबफरविशेषतायाः उपयोगं कर्तुं शक्नुवन्ति, साधारणसूचकाङ्कानां अद्यतनीकरणं अद्वितीयसूचकाङ्कानां अपेक्षया द्रुततरं भवति ।यादृच्छिकडिस्क-प्रवेशः न्यूनीकृतः, अतः अद्यतन-प्रदर्शनं श्रेष्ठम् अस्ति

समूहीकृत अनुक्रमणिकाइत्यस्यप्राथमिक कुञ्जीअनुक्रमणिका कथं सेट् कर्तव्या प्रश्नः - यदि भवान् तत् न सेट् करोति तर्हि किं भविष्यति ?

यदा InnoDB एकं समूहीकृतं अनुक्रमणिकां निर्माति तदा सः भिन्न-भिन्न-परिदृश्यानुसारं भिन्न-भिन्न-स्तम्भान् अनुक्रमणिकारूपेण चयनं करिष्यति:

  1. यदि प्राथमिकं कुञ्जी अस्ति तर्हि प्राथमिककुंजी पूर्वनिर्धारितरूपेण समूहीकृतसूचकाङ्कस्य अनुक्रमणिकाकुंजीरूपेण उपयुज्यते ।

  2. यदि प्राथमिकं कीलं नास्ति तर्हि चिनोतुप्रथमे न समाहितम् NULL मूल्यम्एक एव स्तम्भः यथा अस्तिसमूहीकृत अनुक्रमणिकाindex key

  3. उपर्युक्तेषु कस्यापि अभावे InnoDB स्वयमेव समूहीकृतसूचकाङ्कस्य अनुक्रमणिकाकुंजीरूपेण अन्तर्निहितं स्वतः-वृद्धि-रोविड्-स्तम्भं जनयिष्यति ।

अनुक्रमणिकानिर्माणार्थं वयं प्रायः कीदृशानि क्षेत्राणि चिनोमः ?

यत्र अनुक्रमणिका प्रयोज्यम् अस्ति तत्र परिदृश्यानि : १.

  1. क्षेत्रेषु विशिष्टताप्रतिबन्धाः सन्ति, यथा उत्पादसङ्केतः

  2. WHERE प्रश्नस्थितौ बहुधा प्रयुक्ताः क्षेत्राणि, यत् सम्पूर्णस्य सारणीयाः प्रश्नवेगं सुधारयितुम् अर्हति यदि प्रश्नस्य स्थितिः क्षेत्रं नास्ति तर्हि संयुक्तसूचकाङ्कः स्थापयितुं शक्यते

  3. प्रायः GROUPBY तथा ORDER BY इत्यत्र प्रयुक्ताः क्षेत्राणि, येन अन्वेषणकाले पुनः क्रमणस्य आवश्यकता नास्ति, यतः B+ Tree इत्यस्मिन् अभिलेखाः सर्वे अनुक्रमणिकास्थापनानन्तरं क्रमबद्धाः भवन्ति ।

अनुक्रमणिकाकरणाय न उपयुक्ताः परिदृश्याः

  1. WHERE परिस्थितिषु, GROUP BY, ORDER BY इत्यत्र न प्रयुक्ताः क्षेत्राणि, अनुक्रमणिकायाः ​​मूल्यं द्रुतस्थापनं भवति यदि क्षेत्रं स्थापयितुं न शक्यते तर्हि प्रायः अनुक्रमणिकानिर्माणस्य आवश्यकता नास्ति, यतः अनुक्रमणिका भौतिकस्थानं गृह्णीयात् ।

  2. निम्न-विभेदकक्षेत्राणि , सूचकाङ्कस्य निर्माणस्य आवश्यकता नास्ति, उदाहरणार्थं, लिङ्गक्षेत्रे केवलं पुरुषाः महिलाः च सन्ति यदि पुरुषाणां महिलानां च अभिलेखाः दत्तांशकोशसारणीयां समानरूपेण वितरिताः सन्ति, तर्हि कोऽपि मूल्यः अन्वेषितः भवतु, दत्तांशस्य अर्धभागः भवितुम् अर्हति प्राप्नुत इति ।एतेषु सति अनुक्रमणिका न करणीयम् यतः MySQLअद्यापि एकः अस्तिप्रश्न अनुकूलक, यदा प्रश्नानुकूलकः पश्यति यत् सारणीयां दत्तांशपङ्क्तयः उच्चप्रतिशतम् एकं निश्चितं मूल्यं दृश्यते, तदा सामान्यतया अनुक्रमणिकायाः ​​अवहेलनां कृत्वा कार्यं करिष्यतिपूर्ण तालिका स्कैन

  3. बहुधा अद्यतनं भवन्ति क्षेत्राणि, उदाहरणार्थं, ई-वाणिज्यपरियोजनानां उपयोक्तृसन्तुलनस्य अनुक्रमणिका न कुर्वन्ति यतोहि अनुक्रमणिकाक्षेत्राणि बहुधा परिवर्तितानि भवन्ति ।निर्वाहयितुम् ख+वृक्षःक्रमबद्धतां, ततः नित्यं अनुक्रमणिकापुनर्निर्माणम् आवश्यकं भवति, एषा प्रक्रिया च दत्तांशकोशस्य कार्यक्षमतां प्रभावितं करिष्यति ।

  4. अक्रमितमूल्यानां प्रयोगः न अनुशंसितः(यथा ID card, UUID) अनुक्रमणिकारूपेण, यदा प्राथमिककुञ्जी अनिश्चिता भवति तदा पत्रनोडानां नित्यं विभाजनं डिस्कभण्डारणस्य विखण्डनं च जनयिष्यति

  • दत्तांशसारणी लघुतरम् अस्ति : १. यदा सारणीयां दत्तांशस्य परिमाणं अल्पं भवति, अथवा यदा प्रश्नाय सारणीयां दत्तांशस्य बृहत् भागं स्कैन कर्तुं आवश्यकं भवति, तदा दत्तांशकोश अनुकूलकः अनुक्रमणिकायाः ​​उपयोगस्य स्थाने पूर्णसारणी स्कैन् चिन्वितुं शक्नोति एवं सति सूचकाङ्कस्य निर्वाहस्य व्ययः कार्यप्रदर्शनलाभात् अधिकः भवितुम् अर्हति ।

अधिकाः अनुक्रमणिकाः श्रेष्ठाः सन्ति वा ?

न, यद्यपि अनुक्रमणिकाः प्रश्नदक्षतां सुधारयितुम् अर्हन्ति तथापि एकं अधिकं अनुक्रमणिकां निर्माय नूतनं B+ वृक्षसूचकाङ्कं उत्पद्यते, विशेषतः यदा सारणीदत्तांशस्य मात्रा अतीव विशाला भवति तदा अनुक्रमणिका अधिकं स्थानं गृह्णीयात्

यावन्तः अनुक्रमणिकाः सन्ति, तावन्तः दत्तांशकोशस्य लेखनप्रदर्शनं न्यूनीभवति, यतः प्रत्येकं समये भवन्तः सारणीं योजयन्ति, विलोपयन्ति, परिवर्तयन्ति वा, भवन्तः प्रत्येकस्य B+ वृक्षसूचकाङ्कस्य क्रमं निर्वाहयितुम् अर्हन्ति

सूचकाङ्कस्य अनुकूलनं कथं करणीयम् ?सूचकाङ्कं आच्छादयन्सूचकाङ्कस्य विफलतां अनुकूलितुं निवारयन्तु च,प्राथमिक कुञ्जीवृद्धिशील, उपसर्गसूचकाङ्क अनुकूलन) २.

मया एतानि अनुकूलनविधयः प्रयुक्ताः

  1. SQL कृते यस्य कृते अनेकक्षेत्रेषु दत्तांशं पृच्छितुं आवश्यकं भवति, वयं निर्मातुम् अर्हतिसंघ सूचकाङ्क, अतः प्रश्नविधिः भवतिसूचकाङ्कं आच्छादयन्, तालिकापृष्ठपोषणं परिहरन् I/O कार्याणां बहूनां संख्यां न्यूनीकरोति ।

  2. अस्माकम्‌प्राथमिक कुञ्जीअनुक्रमणिकाः वर्धमानमूल्यानि भवन्ति, यतः अस्माकं अनुक्रमणिका क्रमेण दत्तांशं संगृह्णाति, यदि प्राथमिककुंजीयाः मूल्यं यादृच्छिकं मूल्यं भवति तर्हि पृष्ठविभाजनस्य कारणेन बहुसंख्याकाः स्मृतिखण्डाः भविष्यन्ति, येन अनुक्रमणिकासंरचना संकुचिता न भविष्यति, यत् भविष्यति प्रश्नदक्षतां प्रभावितयन्ति।

  3. वयं इच्छामःअनुक्रमणिकाविफलतां लिखितुं परिहरन्तु SQL कथनानि, यथा अनुक्रमणिकास्तम्भेषु वाम-वाम-अस्पष्ट-मेलनं न कुर्वन्ति, अनुक्रमणिकासु गणनाः, कार्याणि, प्रकार-रूपान्तरण-क्रियाः च न कुर्वन्तिWHERE खण्डे यदि OR इत्यस्मात् पूर्वं कण्डिशन् स्तम्भः अनुक्रमणिकास्तम्भः अस्ति तथा च OR इत्यस्य अनन्तरं कण्डिशन् स्तम्भः अनुक्रमणिकास्तम्भः नास्ति तर्हि अनुक्रमणिका विफलः भविष्यति ।

  • प्रयोगः न तुल्यः (<>) अथवा NOT operator: एते ऑपरेटर् प्रायः अनुक्रमणिकां अमान्यं कुर्वन्ति यतोहि ते सम्पूर्णं सारणीं स्कैन कुर्वन्ति ।

  • OR ऑपरेटर्: यदि प्रश्नस्थितौ OR इत्यस्य उपयोगः भवति, तथा च OR इत्यस्य उभयतः स्थितयः भिन्नाः अनुक्रमणिकाः समाविष्टाः सन्ति, तर्हि एतेषां अनुक्रमणिकानां उपयोगः न भवितुं शक्नोति ।

    • उपयुञ्जताम्‌ OR संचालकः, यदिOR उभयतः स्थितयः भिन्नाः अनुक्रमणिकाः सन्ति, तथा च दत्तांशकोश-इञ्जिनं अधिकतया प्रश्नस्य अनुकूलनार्थं एकस्मिन् समये बहु-सूचकाङ्कानां उपयोगं कर्तुं न शक्नोति ।इदमस्तियतः OR संचालकस्य केवलं उभयतः शर्ताः पूर्तयितुं आवश्यकाः सन्ति, येन प्रश्नानुकूलनस्य जटिलता वर्धते ।

  1. कस्यचित् बृहत् तारस्य कृते अनुक्रमणिका, वयं उपयोक्तुं विचारयितुं शक्नुमःउपसर्ग अनुक्रमणिकाकेवलं अनुक्रमणिकास्तम्भस्य उपसर्गभागः अनुक्रमणिका भण्डारणस्थानं रक्षितुं प्रश्नप्रदर्शने सुधारं कर्तुं च अनुक्रमितः भवति ।

  2. अनुक्रमणिका NOT इति सर्वोत्तमरूपेण सेट् भवति लुप्तमूल्य : अनुक्रमणिकायाः ​​उत्तमतया उपयोगाय अनुक्रमणिकास्तम्भं NOT NULL constraint इति सेट् कर्तव्यम् । द्वे कारणे स्तः- १.

    1. अनुक्रमणिकास्तम्भेषु NULL इत्यस्य उपस्थितिः अनुकूलकस्य अनुक्रमणिकाचयनं अधिकं जटिलं करिष्यति, येन गणना इत्यादीनां कार्याणां अनुकूलनं अधिकं कठिनं भविष्यति ।

    2. NULL मूल्यं निरर्थकं मूल्यं भवति, परन्तु भौतिकं स्थानं गृह्णीयात् अत्र शून्यमूल्यस्तम्भः अस्ति ।NULL संग्रहणार्थं न्यूनातिन्यूनं १ बाइट् स्थानस्य उपयोगः भविष्यति मूल्यानां सूची

यदि अनुक्रमणिका निर्मितं भवति तर्हि प्रश्नं कुर्वन् तस्य उपयोगः भविष्यति वा?अनुकूलकःव्ययस्य आधारेण निष्पादनयोजनां चिनोतु)

नहि।

  1. अहं ज्ञातवान्यदि प्रश्नः अनुक्रमणिकां प्रयुङ्क्ते चेदपि अनुक्रमणिकायाः ​​उपयोगं न कर्तुं शक्नोति ।

    1. यथा: यदा अस्माकं प्रश्नकथनम् अनुक्रमणिकाक्षेत्रे वाम-अस्पष्ट-मेलनं, अभिव्यक्ति-गणना, फ़ंक्शन्, अन्तर्निहित-प्रकार-रूपान्तरण-क्रियाः च करोति, तदा प्रश्न-कथनं अनुक्रमणिका-माध्यमेन गन्तुं न शक्नोति, तथा च प्रश्न-विधिः पूर्ण-सारणी-स्कैन् भवति

    2. वयं च उपयुञ्ज्महेसंघ सूचकाङ्कप्रश्ने यदि वामतमं मेलसिद्धान्तं न अनुसृतं भवति तर्हि अनुक्रमणिकाविफलता अपि भविष्यति ।

  2. अनुकूलकः अस्तिव्ययविचारानाम् आधारेण प्रश्नविधिं चिनुत, प्रश्नार्थं गौणसूचकाङ्कस्य उपयोगं कुर्वन्, अनुकूलकः सारणी-प्रत्यागमनस्य मूल्यं पूर्ण-सारणी-स्कैन्-व्ययस्य च गणनां करिष्यति यदि सारणी-प्रत्यागमनस्य व्ययः अत्यधिकः भवति तर्हि अनुकूलकः अनुक्रमणिकायाः ​​उपयोगं न कर्तुं, अपितु पूर्ण तालिका स्कैन।

यदि अहं varchar प्रकारस्य तिथिक्षेत्रं परिभाषयामि, तथा च दत्तांशेषु एकः '20230922' अस्ति, तथा च यदि अस्मिन् तिथिक्षेत्रे अनुक्रमणिका अस्ति, तर्हि यदि मम प्रश्नस्य where कण्डिशन् अस्ति यत्र time=20230922 एकल उद्धरणं विना, तर्हि... index अद्यापि प्रहारः भवति ?

सूचकाङ्कं न मारयिष्यति।

यतः mysql सम्मुखीभवतिस्ट्रिंग् तथा संख्या तुलनायदा भविष्यतिअन्तर्निहित प्रकार रूपान्तरण, भविष्यतिस्ट्रिंग् ऑब्जेक्ट् सङ्ख्यायां परिवर्तयन्तु, एषा परिवर्तनप्रक्रिया वस्तुतः अन्तर्भवतिनियोग . भवता उक्ते प्रश्ने तिथिक्षेत्रं स्ट्रिंग् अस्ति, अतः यदा अन्तर्निहितप्रकाररूपान्तरणं भवति तदा तिथिसूचकाङ्कक्षेत्रे प्रयुक्तं भविष्यति यदि अनुक्रमणिकायां कार्यगणना क्रियते तर्हि अनुक्रमणिका अमान्यः भविष्यति

पूर्णाङ्कप्रकारस्य अनुक्रमणिकास्तम्भानां कृते, उदाहरणार्थम्id यस्य स्तम्भस्य मूल्यं प्रत्यक्षतया अनुक्रमणिकायां संगृहीतं भवति यत्र फंक्शन् गणना न भवति ।प्रश्ने उपयोगः इति अर्थःidमेलने न आवश्यकम्idकिमपि कार्यात्मकं गणनां वा रूपान्तरणं वा कुर्वन्तु तथा च केवलं पूर्णाङ्कमूल्यानां तुलनां कुर्वन्तु ।

MySQLनवीनतमसंस्करणेन अनुक्रमणिकाविफलतायाः केचन प्रकरणाः समाधानं कृतम् अस्ति वा (Function index:कार्यगणनापश्चात् मूल्यं अनुक्रमणं अपि कर्तुं शक्यते तथा च अनुक्रमणिका skip scan mechanism (वामतमः उपसर्गः))

अहं ज्ञातवान् यत् MySQL8.0 क्षेत्राणि योजयितुं शक्नोतिfunction index, एतत् नूतनं विशेषता अनुक्रमणिकायां कार्याणां उपयोगं कुर्वन् अनुक्रमणिकाविफलतायाः समस्यायाः समाधानं कर्तुं शक्नोति ।

अन्यत् नूतनं विशेषता अस्तिअनुक्रमणिका skip scan, संस्करण 5.7 इत्यस्मात् पूर्वं, संयुक्तसूचकाङ्कस्य उपयोगे, यदि वामतमं मेलनं सिद्धान्तं न पूर्यते, तर्हि अनुक्रमणिकाविफलता भविष्यति तथापि, 8.0 मध्ये अनुक्रमणिका skip scan विशेषता प्रवर्तते ततः परं, संयुक्तसूचकाङ्कानां उपयोगः अद्यापि कर्तुं शक्यते यद्यपि वामतममेलनसिद्धान्तः न अनुवर्तते।

वामतमः मेलः सिद्धान्तः कः ?

मानातु यत् (a, b, c) संयुक्तसूचकाङ्कः अस्ति तस्य भण्डारणक्रमः प्रथमं a द्वारा क्रमणं, ततः a समाने सति b द्वारा क्रमणं, ततः b समाने c द्वारा क्रमणं च । अस्य विशेषतायाः कारणात् संयुक्तसूचकाङ्कानां उपयोगे वामतमः मेलनसिद्धान्तः भवति The specific rules are:

  1. MySQL इत्यस्य संघीयसूचकाङ्कः आरभ्यतेवामतमः अनुक्रमणिकास्तम्भः प्रश्नशर्तैः सह मेलनं कर्तुं आरभते, ततः वामतः दक्षिणतः क्रमेण मेलनं करोति यदि प्रश्नस्थितयः स्तम्भस्य उपयोगं न कुर्वन्ति तर्हि स्तम्भस्य दक्षिणभागे सर्वे स्तम्भाः अनुक्रमणं कर्तुं न शक्यन्ते

  2. यदा प्रश्नस्थितौ स्तम्भस्य उपयोगः भवति तदापरन्तु अस्य स्तम्भस्य मूल्ये श्रेणीप्रश्नः भवति, परिधिप्रश्नस्य क्षेत्राणि च उपयोक्तुं शक्यन्तेसंघ सूचकाङ्क, परन्तु श्रेणीप्रश्नक्षेत्रस्य पृष्ठतः क्षेत्रेषु संयुक्तसूचकाङ्कस्य उपयोगः कर्तुं न शक्यते ।

अतः यदा वयं संयुक्तसूचकाङ्कानां उपयोगं कुर्मः तदा अस्माभिः वामतममेलनसिद्धान्तः पालनीयः अन्यथा केचन अनुक्रमणिकाक्षेत्राणि अनुक्रमणिकाः न भवेयुः ।

समर्थयतिसंघ सूचकाङ्ककिं अस्माभिः किमपि ध्यानं दातव्यं (अत्यन्तं विभेदितानि सुदूरवामभागे स्थापितानि, वामतमं मेलनं सिद्धान्तं, श्रेणीप्रश्नस्य अनन्तरं अनुक्रमणिकायाः ​​उपयोगः न भवति)

  1. अधिकतमःअधिकविशिष्टेन क्षेत्राणि स्थापयतुसंघ सूचकाङ्कदूरवामभागे, सहायकसूचकाङ्क-छनन-प्रभावं सुदृढं कुर्वन्तु, UUID इत्यादीनि क्षेत्राणि संयुक्तसूचकाङ्कस्तम्भस्य उपरि अनुक्रमणिकाकरणाय अथवा श्रेणीकरणाय अधिकं उपयुक्तानि सन्ति ।

  2. यदि संयुक्तसूचकाङ्कस्य वामभागे न्यूनविवेकयुक्तं क्षेत्रं स्थापितं भवति तर्हि तस्य कारणेन प्रश्नानुकूलकः अनुक्रमणिकायाः ​​उपयोगस्य स्थाने पूर्णसारणीस्कैन् चयनं कर्तुं शक्नोति

  3. संयुक्तसूचकाङ्कस्य वामतमः मेलसिद्धान्तः, इयदा श्रेणीप्रश्नस्य (यथा &gt;, &lt;) सम्मुखीभवति तदा मेलनं स्थगितम् भविष्यति, अर्थात् श्रेणीप्रश्नस्य क्षेत्राणि संयुक्तसूचकाङ्कस्य उपयोगं कर्तुं शक्नुवन्ति, परन्तु श्रेणीप्रश्नक्षेत्रस्य पृष्ठतः क्षेत्राणि संयुक्तसूचकाङ्कस्य उपयोगं कर्तुं न शक्नुवन्ति ।परन्तु &gt;=, &lt;=, BETWEEN इत्यस्य चतुर्णां श्रेणीप्रश्नानां कृते, उपसर्गमेलनवत् च मेलनं न स्थगयिष्यति ।

    1. MySQL मध्ये BETWEEN इत्यत्र value1 तथा value2 सीमामूल्यानि सन्ति, &gt;= तथा =&lt; इत्येतयोः सदृशानि ।

    2. सन्दर्भ लिङ्क https://zhuanlan.zhihu.com/p/573138586

वामतमं मेलनं सिद्धान्तप्रश्नक्रमः

 

select * from T where c=1 and a=2 and b=3;

abc अनुक्रमणं कर्तुं शक्यते यतः प्रश्नशर्तक्षेत्राणि कुत्र इति क्रमः न प्रभावितं करोति, MySQL अनुकूलकः अस्मान् क्षेत्राणां प्रश्नक्रमं समायोजयितुं साहाय्यं करिष्यति, अतः सः वामतममेलनसिद्धान्तस्य अपि अनुपालनं करोति ।

सूचकाङ्कस्य अन्तर्गतम्नोद किम् । दत्तांशप्रश्नानां अनुकूलनार्थं MySQL5.6 इत्यस्मिन् योजितम्

सूचकाङ्कपुशडाउन न्यूनीकर्तुं शक्नोतिगौण अनुक्रमणिकाप्रश्नस्य समये सारणी-प्रत्यागमन-सञ्चालनं प्रश्न-दक्षतां सुधरयति यतः तत् करिष्यति सर्वर-स्तरः केषाञ्चन वस्तूनाम् उत्तरदायी भवति ये भण्डारण-इञ्जिन-स्तरेन नियन्त्रिताः भवन्ति ।तस्य निवारणाय अगच्छत्।

  • यदा अनुक्रमणिकाशर्ताः विना पुश-डाउन-अनुकूलनस्य उपयोगः भवति तदा भण्डारण-इञ्जिन् अनुक्रमणिकायाः ​​माध्यमेन आँकडान् पुनः प्राप्तं करोति ततः MySQL Server -इत्यत्र प्रत्यागच्छति ।MySQL सर्वरः छानकस्थितीनां विषये निर्णयं कुर्वन्तु।

  • अनुक्रमणिका-स्थिति-पुश-डाउन-अनुकूलनस्य उपयोगं कुर्वन्, यदि अनुक्रमित-स्तम्भानां कृते कतिपयानि निर्णय-शर्ताः सन्ति, तर्हि MySQL सर्वर-निर्णय-शर्तानाम् एतत् भागं भण्डारण-इञ्जिनं यावत् अधः धक्कायति, ततः भण्डारण-इञ्जिनं न्याययिष्यति यत् अनुक्रमणिका पारित-शर्ताः पूरयति वा इति MySQL Server केवलं यदा अनुक्रमणिका शर्ताः पूरयति तदा एव दत्तांशः पुनः प्राप्तः भविष्यति, MySQL सर्वरे च प्रत्यागमिष्यति ।

अनुक्रमणिकास्थितिपुशडाउन अनुकूलनं भण्डारणइञ्जिनस्य अन्तर्निहितसारणीं पृच्छति इति संख्यां न्यूनीकर्तुं शक्नोति, अपि च न्यूनीकर्तुं शक्नोति MySQL सर्वरः भण्डारणयन्त्रात् कियत्वारं दत्तांशं प्राप्तवान् ।

 

select * from t_user where age > 20 and reward = 100000;

यत्र a&gt;1 तथा b=2 तथा c &lt;3 इति अनुक्रमणिका कथं निर्मातव्या?

  1. (abc), (acb), (ab), (ac) संयुक्तसूचकाङ्कं रचयन्तु, केवलं a can index रचयन्तु

  2. (cab), (cba), (ca), (cb) संयुक्तसूचकाङ्कं रचयन्तु, केवलं c एव अनुक्रमणिकां कर्तुं शक्नोति

  3. (ba) संयुक्तसूचकाङ्कं रचयन्तु, b तथा a इत्येतयोः अनुक्रमणिकाकरणं कर्तुं शक्यते

  4. (bc) संयुक्तसूचकाङ्कं रचयन्तु, b तथा c इत्येतयोः अनुक्रमणं कर्तुं शक्यते

  5. सृजन(bac) २. संघ सूचकाङ्क, ख, क च द्वयोः अनुक्रमणिकाकरणं कर्तुं शक्यते, परन्तु ते (बा) संयुक्तसूचकाङ्कस्य एकः अपि लाभः अस्ति, ग क्षेत्रं शक्नोतिindex pushdown, सारणी-प्रत्यागमनस्य संख्यां न्यूनीकरिष्यति;

  6. निर्मियताम्(bca) संघ सूचकाङ्क, b तथा c इत्येतयोः अनुक्रमणिकाकरणं कर्तुं शक्यते, परन्तु (bc) संयुक्तसूचकाङ्कापेक्षया अस्य एकः अधिकः लाभः अस्ति, a क्षेत्रं कर्तुं शक्नोतिindex pushdown, सारणी-प्रत्यागमनस्य संख्यां न्यूनीकरिष्यति;

(A,B,C) संयुक्त सूचकाङ्क select * from tbn where a=? and b in (?,?) and c>? किं तस्य अनुक्रमणिका भविष्यति ?

एषा प्रश्नः संयुक्तसूचकाङ्कस्य उपयोगं करिष्यति (A,B,C), यतः शर्तः अनुक्रमणिकास्तम्भस्य आधारेण भवति ABC आदेशः आगच्छति, यः आदर्शः उपयोगपरिदृश्यः अस्ति ।

  1. कृते A=?: इयं कण्डिशन् सटीकं मेलनं भवति MySQL कण्डिशन् इत्यस्य स्थानं ज्ञातुं अनुक्रमणिकायाः ​​उपयोगं करिष्यति । A=? record of.

  2. कृते B IN (?, ?): एषा शर्तः निर्दिशति B स्तम्भः द्वौ सम्भाव्यमूल्यौ ग्रहीतुं शक्नोति । MySQL सर्वाणि मेलनानि अन्वेष्टुं अनुक्रमणिकायाः ​​उपयोगं करिष्यतिA=? तथाB स्तम्भः एतयोः मूल्ययोः एकेन अपि सह अभिलेखः अस्ति ।

  3. कृते C>? : एषा शर्तः एकः श्रेणीप्रश्नः अस्ति ।पूर्वमेव आधारितम्A तथाB फ़िल्टर इत्यस्य आधारेण MySQL अन्वेषणार्थं अनुक्रमणिकायाः ​​उपयोगं निरन्तरं करिष्यतिC निर्दिष्टमूल्यात् अधिकानि स्तम्भमूल्यानि सन्ति इति अभिलेखाः ।

यत्र a&gt;100 तथा b=100 तथा c=123 d द्वारा क्रमेण कथं रचयेत्संघ सूचकाङ्क?

अहं चिंतयामिसमर्थयति bcda क्रमेणसंघ सूचकाङ्कसमीचीनतर, अस्मिन् समये b तथा c क्षेत्रयोः अनुक्रमणिकाकरणं कर्तुं शक्यते, andd सञ्चिकाक्रमणं (अतिरिक्तक्रमणं) परिहरितुं अनुक्रमणिकाक्रमणस्य उपयोगं कर्तुं शक्नोति ।, यद्यपि अन्तिमं a क्षेत्रं अनुक्रमणं कर्तुं न शक्यते (a क्रमात् बहिः अस्ति), तथापि सारणी-रिटर्न्-सङ्ख्यां न्यूनीकर्तुं अनुक्रमणिकायाः ​​उपयोगेन अधः धक्कायितुं शक्यते ।

id ,name XX तः चिनोतु यत्र आयुः &gt; 10 तथा च 'xx%',有 इव नाम चिनोतुसंघ सूचकाङ्क(नाम,वयो), प्रश्नप्रक्रियायाः विषये चर्चां कुर्वन्तु

संयुक्तसूचकाङ्कस्य क्रमः प्रथमं नाम, ततः आयुः भवति संरचनात्मकरूपेण प्रथमं नामेन क्रमितं भवति, ततः नाम समानं चेत् वयसा क्रमेण क्रम्यते ।अतः, अनुकूलकर्तुः प्रथमं नाम मेलयितुम् आवश्यकम् अस्ति Name अस्मिन् समये एकः सम्यक् अस्पष्टः प्रश्नः अस्ति, तथा च अनुक्रमणिकाविफलता न भविष्यति, अतः अयं SQL संयुक्तसूचीकरणस्य उपयोगं कर्तुं शक्नोति ।

विशेषतः केवलं नाम अनुक्रमणं कर्तुं शक्यते यतःname right fuzzy query इत्यस्य अनन्तरं आयुक्षेत्रस्य मूल्यानि क्रमेण न सन्ति, अतः आयुः अनुक्रमणं कर्तुं न शक्यते, परन्तु आयुः अनुक्रमणं कर्तुं शक्यते ।index pushdown

अन्तिमः प्रश्नः कृतः क्षेत्रः id तथा name इति एतौ क्षेत्रौ संयुक्तसूचकाङ्के द्रष्टुं शक्यते, अतः सारणीं प्रत्यागन्तुं आवश्यकता नास्ति ।

Name right fuzzy query एकः range query अस्ति, तथा च निम्नलिखितक्षेत्राणि अनुक्रमणं कर्तुं न शक्यन्ते