एसक्यूएल (केवल mySQL नहीं) bitwise संचालन के लिए उपयुक्त नहीं है। यदि आप थोड़ा सा करते हैं और आप टेबल स्कैन को मजबूर करेंगे क्योंकि SQL किसी भी इंडेक्स का उपयोग करने में सक्षम नहीं होगा और एक ही समय में प्रत्येक पंक्ति को जांचना होगा।
यह बेहतर होगा अगर आपने अलग "श्रेणियां" तालिका बनाई और दोनों को जोड़ने के लिए एक उचित तरीके से अनुक्रमित कई पोस्टिंग कैटलॉग तालिका बनाई।
अद्यतन
कि बिटमैप क्षेत्रों आग्रह लोगों के लिए एक मुद्दा नहीं हैं, यह जो सेलको के BIT of a Problem जाँच करने के लिए मदद करता है। लेख के निचले भाग में बिटमैप्स के कारण गंभीर समस्याओं की एक सूची है।
टिप्पणी कि एक कंबल बयान सही नहीं किया जा सकता, ध्यान दें # 10 के बारे में - यह 1NF टूट जाता है तो हाँ, बिटमैप क्षेत्रों बुरा कर रहे हैं:
- डेटा पढ़ने योग्य नहीं है। ...
- बाधाएं लिखने के लिए एक बी #### हैं ....
- आप प्रति फ़ील्ड में दो मान तक सीमित हैं। यह बहुत ही सीमित है; यहां तक कि आईएसओ सेक्स कोड भी ऐसे कॉलम में फिट नहीं हो सकता है ...
- बिट मास्क (या एकल बिट झंडे) के लिए कोई अस्थायी तत्व नहीं है। उदाहरण के लिए, एक ध्वज "is_legal_adult_flg" है ... जन्म तिथि (केवल 3 बाइट्स) के लिए एक तिथि पूरी तथ्य रखेगी और हमें गणना करने की आवश्यकता है जो हमें जानने की आवश्यकता है; यह हमेशा भी सही होगा। ...
- आपको पता चलेगा कि झंडे का उपयोग कई इकाइयों पर एक इकाई की स्थिति को विभाजित करने के लिए होगा ....
- बिट झंडे अनावश्यकता को आमंत्रित करते हैं। सिस्टम में मैंने अभी उल्लेख किया है, उसी तालिका में हमारे पास "is_active_flg" और "is_completed_flg" था। एक पूर्ण नीलामी सक्रिय और उपाध्यक्ष नहीं है। यह दो झंडे में एक ही तथ्य है। मानव मनोविज्ञान (और अंग्रेजी भाषा) एक सकारात्मक शब्द सुनना पसंद करता है (पुराने गीत को याद रखें "हां, हमारे पास आज कोई केले नहीं है!"?)। इन सभी बिट झंडे, और अनुक्रम सत्यापन को राज्य संक्रमण तालिका के दो सेट, बोलियों के लिए एक और शिपमेंट के लिए प्रतिस्थापित किया जा रहा है। राज्य संक्रमण बाधाओं के विवरण के लिए। प्रत्येक नीलामी का इतिहास अब एक ही स्थान पर है और इसे व्यवसाय नियमों का पालन करना है।
- जब तक आप थोड़ा मास्क कॉलम डिस्सेबल करते हैं, और उन फ़ील्ड को फेंक देते हैं जिनके लिए आपको प्रदर्शन की आवश्यकता नहीं होती है, सरल डेटा प्रकारों में सुधार नहीं किया जा रहा है।
- व्यक्तिगत क्षेत्रों पर समूह बनाना और ऑर्डर करना वास्तविक दर्द है। कोशिश करो।
- आपको पूरे कॉलम को इंडेक्स करना होगा, इसलिए जब तक कि आप भाग्य न लें और उन्हें सही क्रम में न रखें, तो आप टेबल स्कैन के साथ फंस गए हैं।
- चूंकि थोड़ा मास्क पहले सामान्य फॉर्म (1 एनएफ) में नहीं है, इसलिए आपके पास सभी विसंगतियां हैं जिन्हें हम आरडीबीएमएस में टालना चाहते थे।
मैं भी जोड़ूंगा, एनयूएलएस के बारे में क्या? के बारे में झंडे क्या है? क्या होगा अगर कुछ सच या गलत न हो?
अंत में, संपीड़न के दावे के संबंध में, अधिकांश डेटाबेस बिट फ़ील्ड को बाइट्स और इनट्स को आंतरिक रूप से पैक करते हैं। बिटमैप फ़ील्ड इस मामले में किसी प्रकार का संपीड़न नहीं देता है। अन्य डेटाबेस (जैसे PostgreSQL) वास्तव में एक बूलियन प्रकार है जो सच/गलत/अज्ञात हो सकता है। इसमें 1 बाइट लग सकता है लेकिन कोई तालिका बहुत बड़ी हो जाने पर बहुत अधिक संग्रहण और पारदर्शी संपीड़न उपलब्ध है।
वास्तव में, यदि कोई तालिका बड़ी हो जाती है तो बिटमैप फ़ील्ड की समस्याएं और अधिक गंभीर हो जाती हैं। यदि आप टेबल स्कैन का उपयोग करने के लिए मजबूर हैं, या यदि आप
स्रोत
2012-02-02 19:15:56
समूह करने की क्षमता खो देते हैं तो श्रेणियों_पॉस्टिंग्स के बीच में कोई अतिरिक्त तालिका क्यों नहीं है, तो एक जीबी तालिका में कुछ एमबी सहेजना कोई लाभ नहीं है? यह भविष्य का सबूत समाधान होगा क्योंकि यह केवल एक मानक एकाधिक श्रेणियों डेटाबेस लगता है? –
मैं ल्यूक से सहमत हूं, यह एक अतिरिक्त तालिका को बनाए रखने के लिए आसान होगा, जिसे कहते हैं, श्रेणियां_ग्रुप, जिसमें एक संरचना होगी: id, category_group_name, स्वास्थ्य, विपणन, व्यक्तिगत, संगीत ... और जो या तो प्रत्येक श्रेणी के अंतर्गत "0"/"1" यह चिह्नित करने के लिए कि क्या यह श्रेणी इस समूह से संबंधित है। इस तरह "समूहों" श्रेणी में शामिल समूहों की संख्या को जोड़ना भी अधिक आसान होगा। – alfasin
@Luc - आप दोनों सही हैं - तथ्य यह है कि डेटा बाहरी एप्लिकेशन द्वारा प्रकाशित किया जाता है जहां मैं कोई बदलाव नहीं कर सकता। कई सारे रिश्तों का सबसे अच्छा समाधान होगा .... – derRobert