sql vs hashtable.containskey vs string.contains

时间:2010-05-18 11:56:46

标签: c# tsql string hashtable

我有一个从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 个答案:

答案 0 :(得分:2)

只有SQL才能阻止整个结果集从数据库传输到您的应用程序。那时,它(取决于)你经常进行这些检查的频率。如果你有很多很多值要检查,那么我会使用哈希表并将整个列表缓存到内存中。

在任何情况下,字符串查找都会表现不佳。

答案 1 :(得分:1)

如果您需要检查是否存在值,则类Contains的方法Dictionary<TKey, TValue>会比Hashtable的方法更快地返回结果。请参阅基准测试结果:http://dotnetperls.com/hashtable

答案 2 :(得分:0)

我可能会误解你,但最快的方法就是自己检索计数:

select count(*) 
from MyTable 
where code = 'x'

答案 3 :(得分:-1)

您不会在查询1和2中要求相同的内容。

Strng将是

  

codestring.Equals('x')

最快的取决于什么。字符串循环:否

Hashtable - 是的,对于已经加载的数千个(即你不必点击数据库)

否则直接数据库。