Проясните пожалуйста такой момент: в вопросе вы пишите, что не устраивает время выборки данных, а в комментариях пишите, что все индексы в памяти. Но ведь индекс — это всего-лишь «указатель», в каком блоке на ЖД хранится данные… и считывание всё-равно происходит с ЖД, а это 5-10 ms.
Не думали попробовать хранить данные на SSD? — скорость рандомного доступа ~0.1 ms, что может быть на 2 порядка быстрее ЖД.