Список и Linq To Sql Производительность Проблема - PullRequest
9 голосов
/ 23 сентября 2011

У меня есть одна таблица (My Sql) с 2 миллионами записей и один список из 100 записей. У меня есть список, кроме лямда-выражения для нахождения всех тех URL-адресов, которые есть в списке, но отсутствуют в таблице.

Теперь проблема в том, что это занимает много времени около 5 минут. Я работаю в мощных VPS и код и базы данных на одном сервере.

Пожалуйста, предложите мне все возможные способы увеличения производительности linq для sql и linq для сущности.

Мой код возвращен

Urls.Except(DbContext.postedurllists.Select(crawl => crawl.PostedUrl).ToList()).ToList();`

Где Urls - это список, содержащий 100 URL-адресов, а postsurllists - это таблица, содержащая запись в 2 миллиона. Спасибо

1 Ответ

3 голосов
/ 23 сентября 2011

В настоящее время вы извлекаете все URL-адресов из базы данных.Это не очень хорошая идея.Вместо этого я бы предложил вытащить пересечение из базы данных путем эффективной передачи вашего Urls списка в базу данных и выполнить исключение на основе результатов:

var commonUrls = DbContext.postedurllists
                          .Select(c => c.PostedUrl)
                          .Where(url => Urls.Contains(url))
                          .ToList();

var separateUrls = Urls.Except(commonUrls);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...