Догадка:
Поскольку вы запрашиваете одну таблицу с двумя объединениями, может случиться так, что mysql испытывает трудности с выбором стратегии блокировки для таблицы, или он пытается выполнить некоторое кэширование, которое здесь не работает, так как вы запрашиваете непересекающиеся множества, пытается многопоточность доступ (очень разумный), но сталкивается с некоторыми проблемами блокировки / параллелизма / поиска файла ..
Союзы
могут также, как правило, использовать более высокий уровень безопасности, поскольку эти два варианта выбора должны быть согласованными. Если вы помещаете их в отдельные транзакции, они этого не делают.
Эксперимент:
Сделайте копию таблицы и объедините их. Если я прав, это должно быть быстрее.
Возможное решение:
Разделите один файл на несколько файлов, чтобы улучшить стратегию параллелизма. Это не / не должно помогать с проблемами блокировки, но исключает проблемы многопоточности / поиска в базе данных.
Было бы полезно узнать, какой механизм хранения вы используете.
Ну, только мои 2 цента. Не могу проверить это здесь прямо сейчас.