2010-07-09 19 views
36

मेरे पास ऐसी स्थिति है जहां मैं एक शब्द खोजना चाहता हूं।पूर्ण पाठ खोज बनाम '% क्वेरी%' का प्रदर्शन CONTAINS क्वेरी

उस परिदृश्य के लिए, कौन सी क्वेरी एक प्रदर्शन बिंदु से अच्छा होगा?

Select Col1, Col2 from Table Where Col1 Like '%Search%' 

या

Select Col1, Col2 from Table Where Col1 CONTAINS(Col1,'Search') 

?

+0

मुझे यह जानने में भी दिलचस्पी होगी: एक ही उद्देश्य के लिए 'REGEXP' का उपयोग कर क्वेरी का सापेक्ष प्रदर्शन क्या है? – JYelton

+1

क्या डेटाबेस? विभिन्न डेटाबेस में उनके पास पूरी तरह से अलग प्रदर्शन विशेषताएं होंगी। – Oded

+0

@ ओडेड: एमएस-एसक्यूएल सर्वर और माईएसक्यूएल दो सबसे ज्यादा उपयोग करते हैं। प्रश्न के प्रयोजनों के लिए, मुझे लगता है कि SQL सर्वर सबसे अधिक रुचि का है। – JYelton

उत्तर

36

पूर्ण पाठ खोज (CONTAINS का उपयोग करके) वाइल्डकार्डिंग के साथ LIKE का उपयोग करने से तेज़/अधिक कुशल होगा। पूर्ण पाठ खोज (एफटीएस) में पूर्ण पाठ इंडेक्स को परिभाषित करने की क्षमता शामिल है, जिसे एफटीएस उपयोग कर सकता है। पता नहीं अगर आप कार्यक्षमता का उपयोग करने का इरादा क्यों एक FTS सूचकांक को परिभाषित नहीं होता ...

(आईई: LIKE '%Search') बाईं ओर wildcarding साथ की तरह एक सूचकांक का उपयोग नहीं कर सकते हैं (यह मानते हुए एक स्तंभ के लिए मौजूद है), एक टेबल स्कैन की गारंटी। मैंने & की तुलना नहीं की है, लेकिन रेगेक्स में एक ही पतन है। स्पष्टीकरण के लिए, LIKE '%Search' और LIKE '%Search%' किसी सूचकांक का उपयोग नहीं कर सकते हैं; LIKE 'Search%' एक सूचकांक का उपयोग कर सकते हैं।

+4

का सुपरसेट है एमएस एसक्यूएल सर्वर में, एक पूर्ण पाठ अनुक्रमणिका क्रम में आवश्यक है कंटेनर का उपयोग करने के लिए। –

+1

क्या यह पूर्ण पाठ खोज इंजन से तेज़ होने जा रहा है .. जैसे ल्यूसीन/सोलर? विशेष रूप से लाखों रिकॉर्ड के मामले में। – Krunal

6

एक विशिष्ट डेटाबेस के लिए, CONTAINS खोज बहुत तेज हो सकती है कि उचित पूर्ण पाठ खोज अनुक्रमणिका खोजे जा रहे क्षेत्र पर बनाया गया है। LIKE ऑपरेटर का मूल्यांकन आमतौर पर एक अनुक्रमणिका का उपयोग नहीं करता है और इस प्रकार सभी डेटा को पढ़ना होगा।

-1

टेबल पर स्वयं की खोज की तरह, प्रदर्शन को मार देगा। सीटीई पर खोज की तरह आवेदन करने के लिए बेहतर है।

+0

यूआरएल के नीचे आज़माएं http://stackoverflow.com/questions/1569002/how-can-i-optimize-refactor-a-tsql-like-clause/32329298#32329298 – Agrawars

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