Я потратил много времени на оптимизацию этого запроса, но он начинает замедляться с большими таблицами. Я предполагаю, что это, вероятно, худшие типы вопросов, но я ищу некоторые рекомендации. Я не имею права раскрывать схему базы данных, поэтому, надеюсь, этой информации достаточно. Спасибо,
SELECT tblA.id, tblB.id, tblC.id, tblD.id
FROM tblA, tblB, tblC, tblD
INNER JOIN (SELECT max(tblB.id) AS xid
FROM tblB
WHERE tblB.rdd = 11305
GROUP BY tblB.index_id
ORDER BY NULL) AS rddx
ON tblB.id = rddx.xid
WHERE
tblA.id = tblB.index_id
AND tblC.name = tblD.s_type
AND tblD.name = tblA.s_name
GROUP BY tblA.s_name
ORDER BY NULL;
Существует связь «один ко многим» между:
- tblA.id и tblB.index_id
- tblC.name и tblD.s_type
- tblD.name и tblA.s_name
+----+-------------+------------+--------+---------------+-----------+---------+------------------------------+-------+------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+------------+--------+---------------+-----------+---------+------------------------------+-------+------------------------------+ | 1 | PRIMARY | derived2 | ALL | NULL | NULL | NULL | NULL | 32568 | Using temporary | | 1 | PRIMARY | tblB | eq_ref | PRIMARY | PRIMARY | 8 | rddx.xid | 1 | | | 1 | PRIMARY | tblA | eq_ref | PRIMARY | PRIMARY | 8 | tblB.index_id | 1 | Using where | | 1 | PRIMARY | tblD | eq_ref | PRIMARY | PRIMARY | 22 | tblA.s_name | 1 | Using where | | 1 | PRIMARY | tblC | eq_ref | PRIMARY | PRIMARY | 22 | tblD.s_type | 1 | | | 2 | DERIVED | tblB | ref | rdd_idx | rdd_idx | 7 | | 65722 | Using where; Using temporary | +----+-------------+------------+--------+---------------+-----------+---------+------------------------------+-------+------------------------------+
WHERE tblB.rdd = 11305
- действительно ли их 65722? Удаление сгенерированной временной таблицы поможет выполнить запрос, но на самом деле трудно сказать, поскольку мы не знаем, что находится в этих таблицах. - person Fenton   schedule 02.11.2011(rdd, index_id)
вtblB
? - person ypercubeᵀᴹ   schedule 03.11.2011