MySQL मैनुअल में index hinting पर एक पृष्ठ है जो उल्लेख करता है कि आप क्वेरी के विशिष्ट भागों के लिए इंडेक्स संकेत निर्दिष्ट कर सकते हैं।माइस्क्ल में इंडेक्स स्कोप कैसे काम करता है?
आप संकेत के लिए
FOR
खंड जोड़ कर इंडेक्स संकेत का दायरा निर्दिष्ट कर सकते हैं। यह क्वेरी प्रसंस्करण के विभिन्न चरणों के लिए निष्पादन योजना के अनुकूलक के चयन पर अधिक सुदृढ़ नियंत्रण प्रदान करता है। केवल इंडेक्स को प्रभावित करने के लिए जब MySQL निर्णय लेता है कि तालिका में पंक्तियों को कैसे ढूंढें और कैसे जुड़ें संसाधित करें,FOR JOIN
का उपयोग करें। पंक्तियों को सॉर्ट करने या समूहित करने के लिए इंडेक्स उपयोग को प्रभावित करने के लिए,FOR ORDER BY
याFOR GROUP BY
का उपयोग करें।
हालांकि, यह कैसे काम करता है या यह वास्तव में MySQL अनुकूलक में क्या करता है इसके बारे में कोई और जानकारी नहीं है। साथ ही अभ्यास में यह वास्तव में कुछ भी सुधारने में नगण्य प्रतीत होता है।
यहाँ एक परीक्षण क्वेरी है और क्या समझाना क्वेरी के बारे में कहते हैं:
SELECT
`property`.`primary_id` AS `id`
FROM `California` `property`
USE INDEX FOR JOIN (`Zipcode Bedrooms`)
USE INDEX FOR ORDER BY (`Zipcode Bathrooms`)
INNER JOIN `application_zipcodes` `az`
ON `az`.`application_id` = '18'
AND `az`.`zipcode` = `property`.`zipcode`
WHERE `property`.`city` = 'San Jose'
AND `property.`zipcode` = '95133'
AND `property`.property_type` = 'Residential'
AND `property`.`style` = 'Condominium'
AND `property`.`bedrooms` = '3'
ORDER BY `property`.`bathrooms` ASC
LIMIT 15
;
के बारे में बताएं:
EXPLAIN SELECT `property`.`primary_id` AS `id` FROM `California` `property` USE INDEX FOR JOIN (`Zipcode Bedrooms`) USE INDEX FOR ORDER BY (`Zipcode Bathrooms`) INNER JOIN `application_zipcodes` `az` ON `az`.`application_id` = '18' AND `az`.`zipcode` = `property`.`zipcode` WHERE `property`.`city` = 'San Jose' AND `property.`zipcode` = '95133' AND `property`.property_type` = 'Residential' AND `property`.`style` = 'Condominium' AND `property`.`bedrooms` = '3' ORDER BY `property`.`bathrooms` ASC LIMIT 15\g
+------+-------------+----------+--------+---------------+---------+---------+------------------------------------+------+----------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+----------+--------+---------------+---------+---------+------------------------------------+------+----------------------------------------------------+
| 1 | SIMPLE | Property | ref | Zip Bed | Zip Bed | 17 | const,const | 2364 | Using index condition; Using where; Using filesort |
| 1 | SIMPLE | az | eq_ref | PRIMARY | PRIMARY | 7 | const,Property.zipcode | 1 | Using where; Using index |
+------+-------------+----------+--------+---------------+---------+---------+------------------------------------+------+----------------------------------------------------+
2 rows in set (0.01 sec)
तो मैं मूल रूप से सोच रहा हूँ कैसे सूचकांक दायरे में इस्तेमाल किया जाना चाहिए था संक्षेप में प्रस्तुत करने, क्योंकि जब मैं USE INDEX FOR ORDER BY (Zipcode Bathrooms)
लाइन जोड़ता या हटाता हूं तो ऐसा कुछ नहीं लगता है।
अनिवार्य रूप से यह मेरे पास ज़िपकोड की सूची के बीच कई रिश्तों को बनाने का एक तरीका था। [आपने वास्तव में उस मुद्दे पर टिप्पणी की जो मैं कर रहा था और यह परिणाम सबसे तेज़ परिणाम प्रतीत होता है।] (Http: // stackoverflow।कॉम/प्रश्न/32256402/एसक्यूएल-प्रदर्शन-उपयोग-या-धीमा-से-इन-जब-उपयोग-ऑर्डर-द्वारा-इन) प्रश्न में यह प्रश्न वास्तव में तेज़ है यदि यह सही इंडेक्स का उपयोग कर रहा है, हालांकि अनुकूलक गलत फाइल चुनने का प्रयास करता है, जिससे फाइलॉर्ट होता है। साथ ही मैं इंडेक्स को भी हटा नहीं सकता क्योंकि वे दोनों उद्देश्यों को हल करने के लिए आवश्यक हैं। – Dbeazy
फिर से मेरी आखिरी टिप्पणी को संपादित करने में सक्षम नहीं था। आपने कहा, 'बाथरूम बहुत चुनिंदा नहीं है; अगर यह संभव होगा तो भी हासिल करने के लिए बहुत कुछ नहीं है। 'हालांकि यह कहां बयान के मामले में सच है, यह बहुत सारी पंक्तियां है, इसलिए इसे आदेश के लिए एक सूचकांक के रूप में उपयोग करना बहुत तेज़ होगा 'बेडरूम 'पर एक इंडेक्स का उपयोग करना। यह भी ध्यान रखना चाहता था कि मैंने ज़ीपोड्स के लिए एक विशाल यूनियन ऑल का उपयोग करने का भी प्रयास किया था, और यह वास्तव में तेज़ था, लेकिन इसे मेरे अलावा अन्य डेवलपर्स द्वारा प्रबंधित करने की आवश्यकता थी, इसलिए मुझे लगता था कि वर्तमान की तुलना में मामूली गति वृद्धि के लिए घुलनशील अमूर्तता थी इसके लायक नहीं। – Dbeazy