Ну тогда остается запустить ваш софт под отладчиком и травмировать всю цепочку вызовов во время чтения и сравнивать тормозящий и не тормозящий вариант. Надо понять что там система такого долгого делает.
Ну не все же 30 гигов вы писали. Там же sparse данные. Вот то что писали в кеше и сидит. Пусть даже не все, но этого уже хватит, чтоб быстрее в общем отработало. Чтоб проверить, надо попробовать прогнать чтение несколько раз. Если дело в кеше — будет ускорение на последующих повторных чтениях. Если нет — будем думать дальше.
Каков вопрос — таков ответ. Судя по вопросу, вам лучше воспользоваться готовой системой баннерной рекламы, а не велосипеды изобретать. А по сути: задайте себе вопрос — какая должна быть зависимость вероятности показа баннера от его стоимости, и вы поймете как реализовать такой алгоритм.