2012-09-03 17 views
5

मैं डेटाबेस में कुछ पाठ सहेज रहा हूं 1000 अक्षर कहता हूं। लेकिन मैं केवल पहले 200 अक्षर प्रदर्शित करता हूं।कौन सा mysql विधि तेज है?

विधि 1
मैं एक स्तंभ में पहली 200 अक्षरों को बचा सकता है और एसक्यूएल तालिका

विधि 2
मैं एक स्तंभ में सब कुछ बचा सकता है और जब तक के दूसरे कॉलम में शेष प्रदर्शित करना मैं 200 अक्षरों के लिए क्वेरी

+0

मुझे लगता है कि ** विधि 1 ** – Daya

+3

मुझे हमारी सवाल अलग तरीके से व्यक्त करते हैं:? 'दोस्तों, किसी ने मेरी जरूरतों के लिए डेटाबेस पर अनुसंधान की रूपरेखा बना सकते हैं';) –

उत्तर

4

यह "क्लीनर" होगा 1 कॉलम में सब कुछ स्टोर करने के लिए। और आप इस

select substring(your_column, 1, 200) as your_column from your_table 
+1

और क्या उत्पादकता के बारे में? सरल चयन एक सेल की तुलना में डीबी 'substring() 'विधि का आह्वान करने के लिए प्रति सेकंड 10 000 अनुरोधों के भीतर यह तेजी से होगा? –

+0

'substring' एक बहुत तेज़ फ़ंक्शन है। मुझे संदेह है कि इस सरल कार्य के साथ प्रदर्शन मुद्दे हैं। लेकिन मैंने इतने भारी भार से कोशिश नहीं की। –

+0

Google खोज परिणामों पर विचार करें, यह ऐसा कुछ करता है। तो मुझे लगता है कि substring() का उपयोग किया जा सकता है – ZenOut

1

यह वास्तव में अप्रासंगिक है की तरह केवल पहले 200 अक्षरों केवल चयन कर सकते हैं, लेकिन अगर आप अनुकूलन करने के लिए प्रयास करते हैं, तो विधि 1 जब तक आप उस कॉलम में आपकी क्वेरी की सीमा के रूप में बेहतर है, (या आप इन कॉलमों को उन प्रश्नों से पूछें जिन्हें आपको वास्तव में चाहिए), क्योंकि सर्वर पक्ष पर substring करने से समय और संसाधन (अनुरोधों की संख्या ...) लेता है। विधि 2 क्लीनर है, लेकिन आप तो विधि 1.

0

समय के लिए अनुकूलित कर रहे हैं यह दो चीजों में से एक करने के लिए नीचे आ जाएगा:

आप PHP में पूरी पंक्ति खींच रहे हैं, तो वापस और उसके बाद ही दिखा पहले 200 वर्ण, तो आपकी नेटवर्क की गति संभावित रूप से खींचने वाले डेटा पर एक बाधा होगी:

यदि दूसरी तरफ आपके पास दो कॉलम हैं, तो संभवतः आपके ड्राइव एक्सेस पर एक बाधा होगी जो डेटा को आपके PHP पर वापस लाएगी - लंबी पंक्तियां कई पंक्तियों तक धीमी पहुंच का कारण बन सकती है।

यह सर्वर-विशिष्ट वजन घटाने के लिए नीचे आ जाएगा। यह वास्तव में इस पर निर्भर करेगा कि आपका सर्वर कैसा प्रदर्शन करता है। मैं कुछ परिदृश्यों को चलाने का सुझाव दूंगा जहां आपका कोड प्रत्येक के कुछ सौ हजार वापस खींचने की कोशिश करता है ताकि यह देखने में कितना समय लगे।

0

विधि 2.

पहले, डेटा की डुप्लीकेट भंडारण आमतौर पर बुरा (नैतिक पतन) है। इस मामले में यह यकीनन सही है।

दूसरा, इसमें दो से अधिक टेबल लिखने में अधिक समय लगेगा।

तीसरा, अब आपने अपडेट किए हैं और कष्टप्रद असंगतताओं के लिए कमजोर हटा दिए गए हैं (देखें # 1)।

चौथा, जब तक कि आप पाठ के लिए पहले 200 वर्ण खोज नहीं रहे हैं, डेटा प्राप्त करना दोनों विधियों के लिए समान होगा (केवल पहले 200 वर्णों की उप स्ट्रिंग का चयन करें)।

पांचवां, भले ही आप पहले 200 अक्षर खोज रहे हों, आप उन पर अनुक्रमित कर सकते हैं, और पुनर्प्राप्ति की गति समान होनी चाहिए।

छठी, आप एक डेटाबेस डिज़ाइन नहीं चाहते हैं जो आपके यूएक्स को सीमित करे - यदि आपको 500 वर्णों में बदलने की आवश्यकता है तो क्या होगा? आपके पास बहुत काम करना होगा।

यह डेटाबेस डिज़ाइन में क्या नहीं करना है इसका एक बहुत ही स्पष्ट मामला है।

संदर्भ: के रूप में जो Emison द्वारा उत्तर दिया http://www.quora.com/MySQL/Which-mysql-method-is-fast

संबंधित मुद्दे