क्या किसी को पता है, क्या FK MySQL में इन्सर्ट/अपडेट ऑपरेशंस को कम करता है? मैं इंजन INNODB का उपयोग करता हूं।

0
viq 17 अक्टूबर 2017, 16:49

2 जवाब

सबसे बढ़िया उत्तर
  • एक टेबल पर FK होने से एक इंडेक्स परोक्ष रूप से एक इंडेक्स बनता है (और बनाए रखता है)।
  • कुछ लेखन कार्य करते समय, अन्य तालिका में उपयुक्त पंक्ति के अस्तित्व को सत्यापित करने के लिए FK के निहित INDEX की जाँच की जाती है। लेखन के दौरान यह एक मामूली प्रदर्शन बोझ है।
  • SELECT ... JOIN करते समय जिसके लिए आप स्पष्ट रूप से उपयुक्त सूचकांक प्रदान करने में विफल रहे, कुछ FK द्वारा निर्मित निहित सूचकांक चलन में आ सकता है। यह कुछ JOINs के लिए एक बड़ा लाभ है, लेकिन इसके लिए FK की आवश्यकता नहीं है, क्योंकि आप INDEX को मैन्युअल रूप से जोड़ सकते थे।
  • अगर एफके परिभाषा में ON DELETE or UPDATE शामिल है, तो और भी काम किया जा सकता है, खासकर CASCADE के लिए। CASCADE के प्रभाव को SELECT और अधिक कोड के साथ प्राप्त किया जा सकता है - लेकिन उतनी कुशलता से नहीं जितना CASCADE को काम करने देता है।
  • एफके सीमित हैं कि वे क्या कर सकते हैं। स्टैक ओवरफ्लो प्रश्न से भरा हुआ है जैसे "मैं एक्स करने के लिए एफके कैसे प्राप्त कर सकता हूं?"

क्या इनमें से कोई भी ध्वनि "डालने/अद्यतन संचालन को कम करने" की तरह है?

1
Rick James 18 अक्टूबर 2017, 02:10

क्या FK MySQL में इन्सर्ट/अपडेट ऑपरेशंस को कम करता है?

यह MySQL के बारे में नहीं है, लेकिन हां के बारे में है। एक कॉलम पर FK बनाने से एक सेकेंडरी इंडेक्स बन जाएगा और इस तरह DML ऑपरेशन पर उन इंडेक्स को भी अपडेट करने की जरूरत है ताकि सही टेबल आँकड़े हों। ताकि, डीबी अनुकूलक एक सही और कुशल क्वेरी योजना तैयार कर सके

1
Rahul 17 अक्टूबर 2017, 16:59