संक्षिप्त विवरण:
बड़ी संख्या में php में हैशिंग एल्गोरिथ्म समाधान की आवश्यकता है पाठ मान।
लंबे विवरण।
PRODUCT_OWNER_TABLE धारावाहिक_एनम्बर (auto_inc), product_name, owner_id OWNER_TABLE Owner_id (auto_inc), owener_name
मुझे 200000 अद्वितीय उत्पादों और उनके मालिकों (और स्वामित्व के सभी बाद के परिवर्तन) के एक डेटाबेस को बनाए रखने की आवश्यकता है। प्रत्येक उत्पाद का एक मालिक है, लेकिन एक मालिक के पास कई अलग-अलग उत्पादों हो सकते हैं। मालिक नाम "एडम स्मिथ", "जॉन रीव्स" आदि हैं, बस टेक्स्ट वैल्यू (काफी यूनिकोड होने की संभावना)।
मैं डेटाबेस डिजाइन को अनुकूलित करना चाहता हूं, इसलिए मैं क्या सोच रहा था, हर हफ्ते जब मैं इस स्क्रिप्ट को चलाता हूं, यह एक गर्विकट के मालिक को फ़ेच करता है, फिर एक मेज के खिलाफ जांच करता है जो मुझे लगता है कि PRODUCT_OWNER_TABLE के समान है, स्वामी आईडी को प्राप्त करना। इसके बाद OWNER_TABLE में owner_id दिखाई देता है यदि यह मेल खाता है, तो इसका एक ही है, इसलिए इसे आगे बढ़ता है समस्या तब होती है जब इसकी अलग-अलग ...
डेटाबेस को अनुकूलित करने के लिए, मुझे लगता है कि OWNER_TABLE में अन्य "स्वामी_नाम" प्रविष्टियों के खिलाफ जांच करनी चाहिए कि यह मान मौजूद है या नहीं। अगर ऐसा होता है, तो मुझे उस स्वामी का उपयोग करना चाहिए IID अगर ऐसा नहीं होता है, तो मुझे एक और प्रविष्टि जोड़नी चाहिए।
ध्यान दें कि "नाम" के बारे में कुछ खास नहीं है जब तक मैं सही लिंक को बनाए रखता हूं और OWNER_TABLE "केवल पढ़ने के लिए, ऐप-न्यू" प्रकार तालिका बना देता हूं - मुझे स्वामित्व का एक ऐतिहासिक संग्रह बनाने में सक्षम होना चाहिए।
मुझे 200000 के लिए यह चेक करना है प्रविष्टियों के साथ, मैं नहीं जानता कि कितने अद्वितीय स्वामी नाम (~ 50000?)। मुझे लगता है कि मुझे हैशिंग समाधान की ज़रूरत है - OWNER_TABLE को सॉर्ट नहीं किया जाएगा, इसलिए खोज करें अन्यथा इष्टतम नहीं होंगे।
प्रोग्रामिंग भाषा PHP है डेटाबेस MYSQL है।
आप जो प्रस्ताव देते हैं वह जटिल, बनाए रखना मुश्किल है, अनावश्यक है और कार्यक्षमता में सुधार नहीं करेगा न ही प्रदर्शन।
यह कई रिश्तों में एक सरल है - इसलिए उत्पाद तालिका में मालिक तालिका (जो आपके डेटा में है) को संदर्भित एक विदेशी कुंजी होना चाहिए। लेकिन मैं कल्पना नहीं कर सकता कि आपके पास एक ऐसा परिदृश्य होगा जहां आपके पास विदेशी कुंजी में एक गैर-रिक्त मूल्य होगा जो मालिक तालिका में किसी मूल्य का संदर्भ नहीं देता है।
समस्या आपके द्वारा किराए की कुंजी (ऑटो वृद्धि मूल्य) के उपयोग से कुछ जटिल है आपके विवरण से, मालिक की असली अनूठी पहचानकर्ता मालिक_नाव है - उस स्थिति में, और जब से MySQL प्रति बाधाओं का समर्थन नहीं करता है, तो मालिक के नाम पर एक अद्वितीय सूचकांक बनाना है- और यहां हमेशा एक वैल्यू सम्मिलित करने का प्रयास करें जब भी आप किसी उत्पाद को जोड़ना या किसी उत्पाद के मालिक को बदलना - आप निर्दिष्ट कर सकते हैं कि क्वेरी डुप्लिकेटों पर ध्यान नहीं देता - फिर यदि इस क्वेरी से प्रभावित_सर्वर 1 होता है, तो insert_id प्राप्त करें, अन्यथा पहले से संग्रहीत की गई कुंजी को चुनाव करें।
सी।
Comments
Post a Comment