У меня была похожая проблема с несколькими таблицами поиска, соединяющимися с большой таблицей с индексированными всеми полями идентификатора. Чтобы отслеживать влияние объединений на время выполнения запроса, я запускал свой запрос несколько раз (ограничиваясь первыми 100 строками), каждый раз добавляя соединение в дополнительную таблицу. После объединения 12 таблиц не было значительных изменений во времени выполнения запроса. К тому времени, когда я присоединился к 13-му столу, время выполнения подскочило до 1 секунды; 14-й стол 4 секунды, 15-й стол 20 с, 16-й 90 секунд.
Предложение Кейро использовать коррелированные подзапросы вместо объединений, например,
SELECT t1_id,
(select t2_name from t2 where t1_id = t2_id),
(select t3_name from t3 where t1_id = t3_id),
(select t4_name from t4 where t1_id = t4_id),
(select t5_name from t5 where t1_id = t5_id),
(select t6_name from t6 where t1_id = t6_id),
(select t7_name from t7 where t1_id = t7_id),
(select t8_name from t8 where t1_id = t8_id),
(select t9_name from t9 where t1_id = t9_id) FROM t1
значительно улучшена производительность запросов. На самом деле подзапросы, похоже, не удлиняют время выполнения запроса (запрос был почти мгновенным).
Я немного удивлен, поскольку думал, что коррелированные подзапросы работают хуже, чем объединения.