Таблица company_settings содержит 200 тысяч строк, а таблица companies - 10 строк. Добавил индекс по LOCATION_ID. В EXPLAIN видно, что вместо чтения всех 200 тысяч строк теперь читает только 4 (которые соответствуют LOCATION_ID = 1). Добавил составной индекс по LOCATION_ID и COMPANY_ID. Также читает 4 строки. При этом в EXTRA "Using filesort" в обоих случаях.
Нужно ли использовать составной индекс в этом случае или достаточно индекса по LOCATION_ID?
MySQL 5.7.35-38
SELECT 'ID', 'COMPANY_ID'
FROM company_settings
INNER JOIN companies ON company_settings.COMPANY_ID = companies.ID
WHERE LOCATION_ID = 1
ORDER BY companies.IS_EXIST DESC;