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

MySQL के क्वेरी प्लानर में कोई आंकड़े मामले के लिए यह रिकॉर्ड/फैनआउट तर्क कैसे प्राप्त किया गया था?

यदि आपके पास अपनी समस्या के बारे में बिल्कुल कोई डेटा नहीं है, तो आपको एक अनुमान लगाने के लिए मजबूर किया जाता है।

उस सूत्र का सामान्य रूप टिप्पणियों में समझाया गया है:

  • अगर हम सिर्फ एक की-कॉलम का इस्तेमाल करते हैं (x ) एक बहुस्तंभ अनुक्रमणिका का (c . के साथ) कॉलम), हमें a . मिलता है पंक्तियाँ (कुल पंक्तियों का 1%)। तो x=1 . के लिए , परिणाम a . है परिभाषा से।
  • यदि हम एक बहु-स्तंभ अनुक्रमणिका के प्रत्येक कुंजी-स्तंभ का मान जानते हैं, तो हमें प्रति संपूर्ण कुंजी में पंक्तियों की संख्या प्राप्त होती है (b ); तो x=c . के लिए , हमें b . मिलता है पंक्तियाँ (जो 1 . है या 10 ) परिभाषा के अनुसार।
  • बीच में (यदि हम 1 से अधिक कुंजी कॉलम के लिए कीवैल्यू का उपयोग करते हैं, लेकिन सभी नहीं), प्रत्येक अतिरिक्त ज्ञात कीवैल्यू के लिए, हम कुछ अतिरिक्त पंक्तियों को बाहर कर सकते हैं:हमारे पास a-b है पंक्तियाँ जो उस मामले से संबंधित नहीं होंगी जहाँ हम अपने पूर्ण . को जानते हैं कुंजी (जिसमें b होगा पंक्तियाँ), और परिभाषा के अनुसार उन्हें प्रयोग करने योग्य कुंजी-स्तंभों के अनुपात के अनुपात में बाहर रखा जाएगा ((x-1)/(c-1) )
  • -1 में (x-1)/(c-1) केवल एक बदलाव है (आप बस अलग-अलग चर नामों का उपयोग कर सकते हैं), क्योंकि हमें केवल अतिरिक्त की गणना करने की आवश्यकता है कॉलम, लेकिन c और x पहले कॉलम सहित गिनती है। (एक समय श्रृंखला में, आप पहले कॉलम . के लिए पैरामीटर को कॉल करेंगे t=0 , और -1 ठीक वैसा ही करता है)।

तो निष्कर्ष में हमें मिलता है a - (a-b) * (x-1)/(c-1) (a पहले कुंजी कॉलम के लिए उन पंक्तियों को घटाएं जिन्हें हम आनुपातिक रूप से बहिष्कृत करते हैं)। यह (यदि आप उस व्यंजक को थोड़ा सा रूपांतरित करते हैं) बिल्कुल दिया गया सूत्र है। एक त्वरित विवेक जांच:x=1 . के लिए (x-1=0 ), दूसरा पद 0 . है और हमें a . मिलता है , जैसा कि पहली शर्त द्वारा परिभाषित किया गया है; x=c . के लिए , हमें a-(a-b)=b . मिलता है जैसा कि दूसरी शर्त द्वारा परिभाषित किया गया है।

इन मान्यताओं का उपयोग करके इस उत्तर को बनाना अनुचित नहीं है, लेकिन आप शायद एक अलग सूत्र पा सकते हैं जो उतना ही समझ में आता है। हालांकि यह तर्क देना कि यह बेहतर है, एक कठिन कार्य होगा।

फिर मान चुनने की बात है (b=10 और 1% इस मामले में)। आप स्पष्ट रूप से कोई भी मूल्य चुन सकते हैं। आंत की भावना को छोड़कर किसी भी विश्वसनीय डेटा के बिना ऐसा करने के लिए, Fermi अनुमान :

आप मूल रूप से अपने इनपुट पैरामीटर के लिए केवल मैग्नाइट (1, 1000000, 1/100) का क्रम चुनते हैं, और आपको अपने परिणाम के लिए परिमाण का उचित क्रम मिलता है।

तो आप गैर-अद्वितीय कुंजी को कवर करने के लिए कितनी पंक्तियों की अपेक्षा करते हैं? यह 1 से अधिक है, अन्यथा आप इसे एक अद्वितीय कुंजी बना देंगे, लेकिन क्या यह 2, 10 या 100 की तरह अधिक है? 10 शायद एक अच्छा अनुमान है (इसमें उस अनुमान में लगभग 3 से 30 का मूल्य शामिल है)। इसलिए हालांकि यह संख्या प्रमुख वितरण के बारे में 2 साल के विश्वव्यापी सर्वेक्षण से आ सकती है, 10 की शक्तियों में अनुमानित मान आमतौर पर इस तरह से प्राप्त होते हैं। अगर आप पूरी तरह से निश्चित होना चाहते हैं, तो डेवलपर से पूछें।

और अनिवार्य xkcd इस तरह के विषयों के लिए:What-if? पृथ्वी को रंग दें




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं विजुअल स्टूडियो 2010 में MySQL 5.1 से कैसे जुड़ूं?

  2. आज, इस सप्ताह, पिछले महीने और कुल [MySQL क्वेरी] तक विज़िट की गणना करें

  3. MySQL फ़ंक्शन से तालिका कैसे वापस करें

  4. कोर्स पूरा होने पर बाहरी डेटाबेस अपडेट करें

  5. मैसकल - एक क्वेरी के साथ कई तालिकाओं से हटाएं