我有一个从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")
列表将在数千个范围内......最快的方式是什么?
答案 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 - 是的,对于已经加载的数千个(即你不必点击数据库)
否则直接数据库。