के साथ विशिष्ट mysql सूचकांक उपयोग मैं इस ActiveRecord क्वेरीरेल
issue = Issue.find(id)
issue.articles.includes(:category).merge(Category.where(permalink: perma))
और MySQL क्वेरी
SELECT `articles`.`id` AS t0_r0, `articles`.`title` AS t0_r1,
`articles`.`hypertitle` AS t0_r2, `articles`.`html` AS t0_r3,
`articles`.`author` AS t0_r4, `articles`.`published` AS t0_r5,
`articles`.`category_id` AS t0_r6, `articles`.`issue_id` AS t0_r7,
`articles`.`date` AS t0_r8, `articles`.`created_at` AS t0_r9,
`articles`.`updated_at` AS t0_r10, `articles`.`photo_file_name` AS t0_r11,
`articles`.`photo_content_type` AS t0_r12, `articles`.`photo_file_size` AS t0_r13,
`articles`.`photo_updated_at` AS t0_r14, `categories`.`id` AS t1_r0,
`categories`.`name` AS t1_r1, `categories`.`permalink` AS t1_r2,
`categories`.`created_at` AS t1_r3, `categories`.`updated_at` AS t1_r4,
`categories`.`issued` AS t1_r5, `categories`.`order_articles` AS t1_r6
FROM `articles` LEFT OUTER JOIN `categories` ON
`categories`.`id` = `articles`.`category_id` WHERE
`articles`.`issue_id` = 409 AND `categories`.`permalink` = 'Διεθνή' LIMIT 1
में अनूदित इस क्वेरी मुझे लगता है कि देखा की explation में है गलत सूचकांक का उपयोग करता
+----+-------------+------------+-------+---------------------------------------------------------------------------+-------------------------------+---------+-------+------+----------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+------------+-------+---------------------------------------------------------------------------+-------------------------------+---------+-------+------+----------+-------------+
| 1 | SIMPLE | categories | const | PRIMARY,index_categories_on_permalink | index_categories_on_permalink | 768 | const | 1 | 100.00 | |
| 1 | SIMPLE | articles | ref | index_articles_on_issue_id_and_category_id, index_articles_on_category_id | index_articles_on_category_id | 2 | const | 10 | 100.05 | Using where |
+----+-------------+------------+-------+---------------------------------------------------------------------------+-------------------------------+---------+-------+------+----------+-------------+
मेरे पास दो इंडेक्स, category_id
अकेले और issue_id - category_id
हैं।
इस क्वेरी में मैं issue_id
और category_id
के साथ खोज रहा हूं जो index_articles_on_category_id
से अधिक तेज़ है।
मैं सक्रिय रिकॉर्ड क्वेरी के साथ सही अनुक्रमणिका का चयन कैसे कर सकता हूं?
माइक, आप एक ही परिणाम प्राप्त करने के लिए केवल एक ही समग्र सूचकांक का उपयोग कर सकते हैं। यदि आपके पास ऐसे प्रश्न हैं जो केवल श्रेणी_आईडी और अन्य श्रेणी का उपयोग करते हैं जो category_id और issue_id (संयुक्त) का उपयोग करते हैं, तो सही अनुक्रमणिका 'index_articles_on_category_id_and_issue_id' होगी। इस तरह के एक समग्र सूचकांक के साथ आप दोनों क्वेरी प्रकारों का फायदा उठा सकते हैं। इस http://stackoverflow.com/questions/1823685/when-should-i-use-a-composite-index – alup