Я разрабатываю собственный почтовый клиент на C #.Одним из очевидных требований является то, что я не загружаю уже загруженные сообщения.Это делается путем сравнения строки уникального идентификатора с сообщениями, хранящимися в моей базе данных.
В базе данных хранятся электронные письма для нескольких пользователей и нескольких учетных записей, поэтому уникальный идентификатор не обязательно будет уникальным в моей базе данных.
В настоящее время у меня есть что-то вроде этого:
List<String> DownloadedUIDs = BLL.EmailsDataSource.ViewEmailUIDs(AccountNo);
foreach (string uid in serveruids) {
if (DownloadedUIDs.Contains(uid)) continue; // don't download messages we already have
...
}
Я знаю, что метод Contains () выполняет линейный поиск, который очень неэффективен.Если на сервере хранится 5000 электронных писем, то необходимо выполнить 5000 линейных поисков в списке из 5000 электронных писем, чтобы определить, существует ли уже электронное письмо.
Могу ли я увидеть более высокую производительность, когда SQL Server заказываетуникальные идентификаторы, а затем выполнить бинарный поиск по ним, или сохранить уникальные идентификаторы в хэш-таблице?Или используя какую-то другую структуру данных?
Кто-нибудь знает о каких-либо аналогичных сравнениях производительности, которые были сделаны?