По возможности выполняйте фильтрацию в базе данных, особенно если это веб-приложение. Если это клиентское приложение, сделайте как можно больше оптимизаций, но оно всегда будет немного медленным для полумиллиона записей. Убедитесь, что ваше приложение сообщает, что оно работает для пользователя.