Как сделать поиск максимально производительным? Что использовать? Асинхронность? Многопоточность?
Оптимизация запроса к БД начинается с того что вы выделяете сет активных запросов которые важны для вас.
Для каждого из них строите план исполнения запросов
EXPLAIN [ ANALYZE ] [ VERBOSE ] ......
Потом с этим планом приходите к специалисту (или сюда) и спрашиваете что надо улучшить в
тексте запроса или в таблице или в индексе чтоб было быстрее.
Добавление большего числа исполнительных потоков (сессий БД) обычно не улучшает ситуацию
а только ухудшает. Практика это показывает. Мы быстро выходим на пологую кривую пропускной
способности диска - и дальше хоть добавляй потоки - все будет только хуже.
Насчет асинхронных операций - не знаю. Если мы работаем через пул коннектов - то надо обсудить
построение абстракции асинхронности над абстракцией пула. Это тема отдельного топика.