Код:
Try
ListView1.Items.BeginUpdate;
// Далее добавляем итемы
Finally
ListView1.Items.EndUpdate;
End;
Должно сильно помочь.
Далее только оптимизация по загрузке данных, но она уже не сильно поможет. Тогда лучше переходить на БД. Там есть режим, когда загружается в один момент только то, что отображается, а потом по мере надобности подгружается. Хотя и с ListView можно пойти темже путем - грузить в отдельном потоке, вернув управление пользователю.