निर्भर करता है।
चर # 1: यदि MySQL मक्खी पर अनुक्रमणिका (तों) का निर्माण करना चुनता है, या तब तक प्रतीक्षा करता है जब तक कि सभी आंकड़े अंदर नहीं हो जाते हैं, तब अनुक्रमणिका बनाने के लिए एक प्रकार, आदि करें। नोट: UNIQUE इंडेक्स (मुझे लगता है) को फ्लाई पर बनाया जाना है ताकि UNIQUEness को सत्यापित किया जा सके। InnoDB के लिए प्राथमिक कुंजी डेटा (या आप इसके विपरीत बता सकते हैं) के साथ संग्रहित किया जाता है, ताकि बेतरतीब ढंग से होना चाहिए।
चर # 2: सूचकांक डेटा को ट्रैक करता है (जैसे AUTO_INCREMENT या टाइमस्टैम्प) बनाम रैंडम (GUID, MD5), या कहीं बीच में (भाग संख्या, नाम, friend_id)।
चर # 3 (यदि इंडेक्स फ़्लाई पर बनाया गया है): इंडेक्स कैश (key_buffer या innodb_buffer_pool) में फिट हो सकता है, या डिस्क पर फैल सकता है।
इंडेक्स जो डेटा को ट्रैक करते हैं, वे # 1 के उत्तर की परवाह किए बिना, कुशल और वस्तुतः रैखिक होते हैं।
रैंडम आईडी एक दर्द है। यदि सूचकांक कैश में फिट नहीं होगा, तो इसे बनाने का समय अन्य चर की परवाह किए बिना, रैखिक से बहुत खराब होगा। (मैं इस मामले में रोलांडो से असहमत हूं।) पीके के लिए एक GUID के साथ एक विशाल InnoDB तालिका INSERT में बहुत धीमी है - 100 पंक्तियों पर योजना / साधारण डिस्क के लिए सेकंड; यदि आप SSD है तो शायद 1000। लोड डेटा और बैच INSERTs आप यादृच्छिक भंडारण की सुस्ती पिछले नहीं मिलेगा।
3.53 के माध्यम से 5.6 - बहुत कुछ नहीं बदला है।
एकाधिक स्पिंडल? RAID स्ट्रिपिंग लगभग किसी भी स्थिति में बेहतर है कि मैन्युअल रूप से इसे यहां और वहां से असाइन किया जाए। मैनुअल बंटवारे से असंतुलित स्थितियां पैदा होती हैं - डेटा डिस्क पर एक टेबल स्कैन अटक जाता है; इंडेक्स-ओनली ऑपरेशन इंडेक्स डिस्क पर अटक जाता है; एक अकेला क्वेरी पहले इंडेक्स डिस्क को हिट करता है, फिर डेटा डिस्क (ओवरलैप नहीं); आदि।