मैं निम्नलिखित mysql क्वेरी चलाने के लिए और पहले प्रश्न के लिए के रूप में सभी प्रकार देखनेव्याख्या के आधार पर mysql क्वेरी को अनुकूलित करने के लिए कैसे करें। (प्रकार: सभी
mysql> EXPLAIN
SELECT one.language_id as filter_id,
one.language_name as filter_name,
two.count as count
FROM books_f9_languages one
INNER JOIN (SELECT language_id,
count(*) as count
FROM link_f9_books_lists
WHERE books_list_id IN (1691,1,2,3,4,6,7,8,9,10,11,12,13,14,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,34,35,36,37,43,44,47,51,54,57,58,59,68,71,76,77,86,88,93,94,99,120,125,126,127,133,146,147,148,257,260,261,262,263,264,266,267,268,269,270,271,272,275,276,286,767,768,769,771,772,774,777,779,783,785,786,790,792,799,808,811,813,814,815,819,825,828,829,847,850,852,853,855,856,857,858,862,863,866,869,873,875,882,891,900,907,917,925,930,935,1092,1531,1532,1533,1534,1535,1536,1537,1538,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1556,1557,1558,1560,1561,1563,1564,1565,1567,1568,1569,1570,1571,1572,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1586,1588,1589,1590,1591,1592,1595,1597,1599,1600,1601,1603,1604,1605,1606,1607,1608,1609,1610,1612,1613,1614,1615,1616,1617,1620,1621,1622,1623,1624,1625,1627,1628,1629,1630,1632,1636,1637,1638,1639,1640,1642,1643,1644,1645,1646,1648,1649,1651,1652,1653,1654,1659,1660,1662,1665,1675,1677,1679,1680,1689,1692,1693,1696,1698,1699,1702,1703,1705,1711,1713,1714,1716,1717,1719,1720,1726,1728,1729,1732,1734,1735,1736,1738,1743,1744,1753,1754,1755,1756,1759,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1797,1837,827) GROUP BY language_id) two
WHERE one.language_id = two.language_id
ORDER BY filter_name;
यह आउटपुट है,
+----+-------------+---------------------+--------+---------------+---------------+---------+-----------------+------+-----------------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------------------+--------+---------------+---------------+---------+-----------------+------+-----------------------------------------------------------+
| 1 | PRIMARY | <derived2> | ALL | NULL | NULL | NULL | NULL | 5 | Using temporary; Using filesort |
| 1 | PRIMARY | one | eq_ref | PRIMARY | PRIMARY | 4 | two.language_id | 1 | |
| 2 | DERIVED | link_f9_books_lists | range | books_list_id | books_list_id | 4 | NULL | 273 | Using where; Using index; Using temporary; Using filesort |
+----+-------------+---------------------+--------+---------------+---------------+---------+-----------------+------+-----------------------------------------------------------+
3 rows in set (0.01 sec)
कौन सा स्तंभ मैं क्रम में सूचकांक करने के लिए है। कि सभी बनाने के लिए, सूचकांक का उपयोग करें।
धन्यवाद।
मैं इस, कोई change..mysql> बदल तालिका books_f9_languages सूचकांक (language_id, LANGUAGE_NAME) जोड़ने था, क्वेरी ठीक है, 16 पंक्तियों प्रभावित (0.30 सेकंड) रिकार्ड: 16 डुप्लिकेट: 0 चेतावनी: 0 – beck03076
@ beck03076, तुम अब भी प्रकार में सभी देख सकते हैं, लेकिन 'अस्थायी का उपयोग कर रहे हैं; फाइलों का उपयोग करना 'चला गया? यही आपको मार रहा है। यह व्युत्पन्न तालिका के लिए हमेशा 'ALL' होगा। क्षमा करें अगर यह मदद नहीं करता है। –
वे मार्कस नहीं गए हैं। – beck03076