У меня есть таблица 1 и таблица 2.
Таблица 1 PARTNUM - ID_BRAND partnum - это первичный ключ id_brand "индексируется"
Таблица 2 ID_BRAND - BRAND_NAME id_brand - это первичный ключ brand_name "проиндексировано"
Таблица 1 содержит 1 миллион записей, а таблица 2 - 1.000 записей.
Я пытаюсь оптимизировать какой-то запрос с помощью EXPLAIN, и после многих попыток я зашел в тупик.
EXPLAIN
SELECT pm.partnum, pb.brand_name
FROM products_main AS pm
LEFT JOIN products_brands AS pb ON pm.id_brand=pb.id_brand
ORDER BY pb.brand ASC
LIMIT 0, 10
Запрос возвращает этот план выполнения:
ID, SELECT_TYPE, TABLE, TYPE, POSSIBLE_KEYS, KEY, KEY_LEN , REF, ROWS, EXTRA
1, SIMPLE, pm, range, PRIMARY, PRIMARY, 1, , 1000000, Using where; Using temporary; Using filesort
1, SIMPLE, pb, ref, PRIMARY, PRIMARY, 4, demo.pm.id_pbrand, 1,
Оптимизатор запросов MySQL показывает временную сортировку файлов в плане выполнения. Как мне этого избежать?
«ЗЛО» находится в ORDER BY pb.brand ASC. Упорядочивание по внешнему полю кажется узким местом.