2011-05-27 18 views
6

मेरे पास यह नाम_स्कोप एक पसंद है और एक कथन में पसंद नहीं है। क्या यह REGEXP का उपयोग करने की तुलना में निष्पादन के मामले में तेज़ है?कौन सा बेहतर है? MySQL की पसंद या REGEXP?

named_scope :order_search, :order => "name LIKE '%urgent%' AND name NOT LIKE '%not urgent%' DESC, created_at DESC" 
+1

बेहतर इस्तेमाल 'RLIKE' या' REGEXP' – diEcho

उत्तर

2

जहां तक ​​मुझे पता है कर रहा हूँ में, MySQL के LIKE इस मामले में बोयर-मूर का उपयोग करेगा, इसलिए वहाँ LIKE के लिए एक मामूली लाभ हो सकता है।

यह ट्रिगर का उपयोग करने की तुलना में नगण्य होगा जो पूरी अभिव्यक्ति को is_urgent फ़ील्ड में संग्रहीत करेगा। फिर आप (is_urgent, created_at) पर एक इंडेक्स जोड़ सकते हैं।

+0

यह सबसे क्वेरी नहीं छोड़ा है, सूचकांक काम नहीं करेगा सबसे क्वेरी नहीं छोड़ा है – Neo

+0

वह अपने पुनर्गठन पर निर्भर करेगा। यदि कुछ जरूरी चीजें हैं तो योजनाकार इंडेक्स का उपयोग करेगा। –

+0

नहीं, यह फाइलोर्ट है, इंडेक्स सॉर्ट नहीं – Neo

5

यह मिलीसेकंड अंतर, अनजान है। जब तक आप अत्यधिक मात्रा में यातायात से निपट नहीं रहे हैं, इससे कोई फर्क नहीं पड़ता।

यदि आप अपने दृष्टिकोण के साथ प्रदर्शन समस्याओं का सामना कर रहे हैं, तो संभव है क्योंकि आपकी तालिका में बड़ी मात्रा में पंक्तियां होंगी। बोतल-गर्दन तब पसंद नहीं है (और MySQL भी REGEXP का समर्थन करता है) लेकिन आपकी तालिका संरचना।

किसी भी मामले में, आपको MySQL Indexes और MySQL Fulltext Search पर पढ़ना चाहिए।

1

आपकी क्वेरी, यह सूचकांक तो जैसे और regexp का उपयोग नहीं कर सकता है कर रहे हैं एक ही

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