"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > ## मैं InnoDB के साथ MySQL जैसी \'%string%\' क्वेरी को कैसे अनुकूलित कर सकता हूं?

## मैं InnoDB के साथ MySQL जैसी \'%string%\' क्वेरी को कैसे अनुकूलित कर सकता हूं?

2024-11-01 को प्रकाशित
ब्राउज़ करें:436

## How Can I Optimize MySQL LIKE \'%string%\' Queries with InnoDB?

MySQL को InnoDB में '%string%' क्वेरीज़ की तरह अनुकूलित करना

कई अनुप्रयोगों को टेक्स्ट के मुख्य भाग के भीतर एक स्ट्रिंग की खोज करने की आवश्यकता होती है। MySQL ऐसी खोजों को करने के लिए एक LIKE ऑपरेटर प्रदान करता है, लेकिन हम इष्टतम प्रदर्शन के लिए इन प्रश्नों को कैसे अनुकूलित कर सकते हैं?

समस्या

निम्न तालिका पर विचार करें:

CREATE TABLE `example` (
`id` int(11) unsigned NOT NULL auto_increment,
`keywords` varchar(200) NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB;

जैसे किसी क्वेरी को निष्पादित करते समय:

SELECT id FROM example WHERE keywords LIKE '%whatever%'

हम डेटाबेस से उम्मीद कर सकते हैं खोज को तेज़ करने के लिए किसी अनुक्रमणिका का उपयोग करें. हालाँकि, यदि हम कीवर्ड कॉलम पर एक सरल इंडेक्स जोड़ते हैं:

ALTER TABLE `example` ADD INDEX `idxSearch` (`keywords`);

एक EXPLAIN क्वेरी से पता चलता है कि MySQL को अभी भी संपूर्ण तालिका को स्कैन करने की आवश्यकता है।

समाधान

MySQL खोज स्ट्रिंग की शुरुआत से मिलान करके इंडेक्स का उपयोग करता है। LIKE 'whatever%' जैसी क्वेरीज़ के लिए, इंडेक्स का उपयोग किया जा सकता है क्योंकि 'whatever' स्ट्रिंग की शुरुआत में एंकर किया गया है।

हालाँकि, LIKE '%whatever%' जैसी क्वेरीज़ में ऐसा कोई एंकर नहीं है। खोज शब्द स्ट्रिंग के भीतर "फ्लोटिंग" दिखाई देता है, जिससे MySQL को पूरे फ़ील्ड को स्कैन करने के लिए मजबूर होना पड़ता है।

ऐसी क्वेरी को अनुकूलित करने के लिए, हम फुलटेक्स्ट इंडेक्स का उपयोग कर सकते हैं। ये अनुक्रमणिकाएँ विशेष रूप से "फ़्लोटिंग" खोजों के लिए डिज़ाइन की गई हैं। InnoDB ने संस्करण 5.6.4 से फुलटेक्स्ट इंडेक्स का समर्थन किया है, जिससे यह LIKE '%string%' क्वेरी को अनुकूलित करने के लिए एक व्यवहार्य विकल्प बन गया है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3