Задача выборки по критериям
Здравствуйте. Есть интерестная задача: Нужно написать максимально быстрый алгоритм поиска по 10 000 000 обьектам состоящих из 4х полей:
0-100
0-1000000
0-200
0-200
Возможны запросы типа диапазона.
Использовать нужно интерпретируемый язык. Python\Ruby - не суть важно. Вопрос несколько концептуальный.
На текущий момент делаю так, для каждого поля есть хеш. Значениями которого являются массив id обьектов этого ключа. Если запрос без диапозонов - все работает практически мгновенно. Для диапазона дергаю все возможные значения. В конце, делаю обьединение всех массивов и получаю результат. Не уверен что это самый оптимальный алгоритм. Вопрос в том, как строить индекс по этому добру чтобы быстро бегать? Как оптимизировать запросы по диапозону? Что почитать?