Бор.
Дерево по неявному ключу.
Использование set-а, хеш-таблицы.
Тестируем, используем profiler.
Подробнее: plan & code