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

MySQL ENUM प्रकार बनाम टेबल में शामिल हों

  • ENUM में मानों के सेट को बदलने के लिए ALTER TABLE . की आवश्यकता होती है जो एक तालिका पुनर्गठन का कारण बन सकता है - एक अविश्वसनीय रूप से महंगा ऑपरेशन (तालिका पुनर्गठन तब नहीं होता है जब आप ENUM परिभाषा के अंत में केवल एक नया मान जोड़ते हैं, लेकिन यदि आप एक को हटाते हैं, या ऑर्डर बदलते हैं, तो यह एक टेबल करता है पुनर्गठन)। जबकि लुकअप टेबल में मानों के सेट को बदलना INSERT या DELETE जितना आसान है।

  • किसी ENUM में मानों के साथ अन्य विशेषताओं को जोड़ने का कोई तरीका नहीं है, जैसे कि कौन-सी विशेषताएँ सेवानिवृत्त हो चुकी हैं, और कौन-सी विशेषताएँ आपके उपयोगकर्ता इंटरफ़ेस में ड्रॉप-डाउन सूची में डालने के योग्य हैं। हालांकि, लुकअप टेबल में ऐसी विशेषताओं के लिए अतिरिक्त कॉलम शामिल हो सकते हैं।

  • विशिष्ट मानों की सूची प्राप्त करने के लिए किसी ENUM को क्वेरी करना बहुत कठिन है, मूल रूप से आपको INFORMATION_SCHEMA से डेटा प्रकार परिभाषा को क्वेरी करने की आवश्यकता होती है , और BLOB से सूची को पार्स करना वापस लौटा। आप कोशिश कर सकते हैं SELECT DISTINCT status आपकी तालिका से, लेकिन वह केवल वर्तमान में उपयोग में आने वाले स्थिति मान प्राप्त करता है, जो कि ENUM में सभी मान नहीं हो सकते हैं। हालांकि, यदि आप लुकअप तालिका में मान रखते हैं, तो क्वेरी करना, क्रमित करना आदि आसान है।

मैं ENUM का बहुत बड़ा प्रशंसक नहीं हूं, जैसा कि आप बता सकते हैं। :-)

वही CHECK बाधाओं पर लागू होता है जो एक कॉलम की तुलना मूल्यों के एक निश्चित सेट से करते हैं। हालांकि MySQL वैसे भी CHECK बाधाओं का समर्थन नहीं करता है।

अपडेट:MySQL 8.0.16 अब CHECK लागू करता है बाधाएं



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. उन पंक्तियों का चयन कैसे करें जिनमें वर्तमान दिन का टाइमस्टैम्प है?

  2. पायथन MySQL कनेक्टर - फ़ेचोन का उपयोग करते समय अपठित परिणाम मिला

  3. SQL क्वेरी परिणाम को पांडा डेटा संरचना में कैसे परिवर्तित करें?

  4. PHP प्रदर्शन छवि BLOB MySQL से

  5. MySQL एक तारीख में दिन जोड़ता है