मैं एक MySQL डेटाबेस में निम्न तालिका है:एकाधिक स्तंभ सूचकांक एकाधिक इंडेक्स बनाम
CREATE TABLE `secondary_images` (
`imgId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`primaryId` int(10) unsigned DEFAULT NULL,
`view` varchar(255) DEFAULT NULL,
`imgURL` varchar(255) DEFAULT NULL,
`imgDate` datetime DEFAULT NULL,
PRIMARY KEY (`imgId`),
KEY `primaryId` (`primaryId`),
KEY `imgDate` (`imgDate`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
एसक्यूएल निम्नलिखित होगा: आप देख सकते हैं मैं बनाया
SELECT imgURL, view FROM secondary_images
WHERE primaryId={$imgId} ORDER BY imgDate DESC
दोनों primaryId
और imgDate
, इंडेक्स कुंजी। इसके पीछे मेरी सोच थी क्योंकि WHERE
क्लॉज क्वेरी primaryId
का उपयोग करके परिणाम देती है, और ORDER
क्लॉज imgDate
का उपयोग करता है।
मेरा सवाल है, क्या मैं अभी कई इंडेक्स का उपयोग करना बेहतर होगा? या मुझे एक बहु स्तंभ सूचकांक चाहिए (कुछ समय मैं इस समय बहुत अच्छी तरह से समझ नहीं पा रहा हूं)?
यह मैं क्या से मिलता है, इसकी व्याख्या:
id = 1
select_type = simple
table = secondary_images
type = ref
possible_keys = primaryId
key = primaryId
key_len = 5
ref = const
rows = 1
extra = Using where; Using filesort
नोट: यह एक एकाधिक स्तंभ सूचकांक का उपयोग नहीं कर रहा है, यह उपरोक्त तालिका वर्णन का उपयोग करने से परिणाम है।
क्या आप चयन के लिए EXPLAIN पोस्ट कर सकते हैं? :) – Konerak
ध्यान रखें कि indeces मुक्त नहीं हैं। यदि आपके पास एकाधिक इंडेक्स हैं, तो इसका मतलब प्रत्येक डालने या अपडेट पर है, प्रत्येक इंडेक्स को अपडेट करने की आवश्यकता है। आपको पुनर्प्राप्ति पर दिखाई देने वाले प्रदर्शन सुधार के उन अपडेट के प्रदर्शन हिट का वजन करना होगा। – Marvo
यह भी याद रखें कि यदि आपके पास एक स्तंभ है जिसमें कई पंक्तियों में समान मूल्य है, तो इंडेक्स वास्तव में प्रदर्शन को और भी खराब कर सकता है। – Poodlehat