sql vs hashtable.containskey против string.contains - PullRequest
1 голос
/ 18 мая 2010

У меня есть список значений, извлеченных из SQL-запроса, чтобы выяснить, присутствуют ли в нем x предоставленные значения.

SQL:
  -Select null from table where code='x'
  -resul.count>0

String:
  -Loop for concatenating the codes in one string
  -codesstring.Contains("x")

Hashtable:
  -Loop for adding the codes to the hashtable
  -codeshashtable.ContainsKey("x")

Список будет в диапазоне тысяч ... какой самый быстрый способ?

Ответы [ 4 ]

2 голосов
/ 18 мая 2010

Только SQL предотвратит передачу всего набора результатов из БД в ваше приложение. На этом этапе это зависит (немного) от того, как часто вы делаете эти проверки. Если у вас есть много, много и много значений для проверки, я бы пошел с хеш-таблицей и кэшировал весь список в памяти.

Поиск строк будет плохим исполнителем в любом сценарии.

1 голос
/ 10 ноября 2010

Если вам нужно проверить, присутствует ли значение, метод Contains класса Dictionary<TKey, TValue> возвращает результат быстрее, чем тот же метод Hashtable. См результат теста: http://dotnetperls.com/hashtable.

0 голосов
/ 18 мая 2010

Возможно, я вас неправильно понимаю, но самый быстрый способ - просто получить сам счет:

select count(*) 
from MyTable 
where code = 'x'
0 голосов
/ 18 мая 2010

Вы НЕ запрашиваете то же самое в запросах 1 и 2.

Strng будет

codestring.Equals ('x')

Какое самое быстрое зависит. Строка цикла: нет

Hashtable - да, для тысяч уже загруженных (то есть вам не нужно обращаться к базе данных)

В противном случае непосредственно база данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...