По договоренности
Сразу оговорюсь, что не уверен возможно ли вообще такое сделать...
Есть очень очень большая мускуль БД.
В выборке к многомиллионной БД учавствуют 12 join-ов.
Завтра может быть 15-20 джоинов. Так устроен бизнесс, логика!
Таблицы вери биг большие. Все индексы проставлены верно.
Прошу не давать советы по улучшению и пересмотру индексов / джоинов и т.д.
На всё этом держится большой бизнесс. Переписывать и оптимизировать сам mysql прошу не советовать. Группа разработчиков над этим работает делается постоянно.
Вопрос заключается скорее в какой то инновационной разработке НЕТРИВИАЛЬНОЙ.
И возможно ли такое?!
----------------
Суть:
Допустим мы имеем запрос из 12 join-ов! Отрабатывается за 3 секунды.
В то же время мы можем подтянуть из elasticsearch всю инфу, так, что останется всего 4-5 джоинов.
Почему так не делаем?!
elasticsearch дал результат из 45000 строк (это те лишние джоины, которые щас опрашиваются в БД). Теперь эти 45000 строк "как то надо заджойнить / запихнуть" в сам запрос, *чтобы Mysql Select верно отсортировал данные, в нужном порядке*.
100-ни миллинов записей каждой ночью переиндексируются эластиком. Но всё же нельзя на эластике вытащить верно всё, т.к. логика сортировки завязана в Mysql.
Может можно написать какойто магический СИ компилятор, или как вообще не имею представления... Чтобы мы делали запрос к эластику. Получали эти 45 000 строк и их как то ДЖОЙНИЛИ в mysql ??
Допустим даётся запрос в эластик он генерит микроИндекс (микро Табл) с результатом, который потом джойнится
Запорос к эластику будет в итоге 100-150 ms + оставшиемся 4-5 джоинов (которые отрабатываются за 0,5 ms) = это против 3 секунд щас чисто из мускуля (((
Или всё это из области фантастики?((