मैं 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
अपनी दूसरी क्वेरी में जोड़ने का प्रयास करें ।