मैं blogentriesबेहतर प्रदर्शन के लिए अपने डेटाबेस को अनुक्रमित करने की कोशिश कर रहा हूं, लेकिन एक मुद्दा मिला।
यहाँ संरचना है:
CREATE TABLE IF NOT EXISTS `blogentries` (
`id_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`title_id` varchar(100) COLLATE latin1_german2_ci NOT NULL,
`entry_id` varchar(5000) COLLATE latin1_german2_ci NOT NULL,
`date_id` int(11) NOT NULL,
PRIMARY KEY (`id_id`)
)
ENGINE=MyISAM
DEFAULT CHARSET=latin1
COLLATE=latin1_german2_ci
AUTO_INCREMENT=271;
निम्नलिखित की तरह एक क्वेरी ठीक से सूचकांक का उपयोग करता है:
EXPLAIN SELECT id_id,title_id FROM blogentries ORDER by id_id DESC
+ ---- + ------------- + ------------- + ------- + -------- ------- + --------- + --------- + ------ + ------ + -------- ----- + | आईडी | select_type | तालिका | प्रकार | possible_keys | कुंजी | key_len | रेफरी | पंक्तियाँ | अतिरिक्त | + ---- + ------------- + ------------- + ------- + -------- ------- + --------- + --------- + ------ + ------ + -------- ----- + | 1 | SIMPLE | ब्लॉगजेंट | सूचकांक | नल | PRIMARY | 114 | नल | 126 | इंडेक्स का उपयोग करना | + ---- + ------------- + ------------- + ------- + -------- ------- + --------- + --------- + ------ + ------ + -------- ----- +
हालाँकि, जब मैं क्वेरी entry_idमें जोड़ता हूँ तो SELECTयह फाइलसर्ट का उपयोग करता है
EXPLAIN SELECT id_id,title_id,entry_id FROM blogentries ORDER by id_id DESC
+ ---- + ------------- + ------------- + ------ + --------- ------ + ------ + --------- + ------ + ------ + ------------ ---- + | आईडी | select_type | तालिका | प्रकार | possible_keys | कुंजी | key_len | रेफरी | पंक्तियाँ | अतिरिक्त | + ---- + ------------- + ------------- + ------ + --------- ------ + ------ + --------- + ------ + ------ + ------------ ---- + | 1 | SIMPLE | ब्लॉगजेंट | सभी | नल | नल | नल | नल | 126 | फाइल का उपयोग करना | + ---- + ------------- + ------------- + ------ + --------- ------ + ------ + --------- + ------ + ------ + ------------ ---- +
मैं सोच रहा था कि ऐसा क्यों हो रहा है और मैं इससे कैसे बच सकता हूं? क्या यह कारण है VarChar, और इसे किसी और चीज़ में बदल दिया जाना चाहिए?
जैसा कि मैं उच्च Handler_read_rndऔर Handler_read_rnd_nextमूल्यों में चल रहा हूं मैं अपने सभी प्रश्नों को सूचकांक का उपयोग करने की कोशिश कर रहा हूं ।
अगर आपको कोई अन्य जानकारी चाहिए तो मैं उसे पोस्ट भी कर सकता हूँ।
WHERE 1=1अपनी दूसरी क्वेरी में जोड़ने का प्रयास करें ।