如何高效地查找出数组中的各个数是否在表中(200)

  • 主题发起人 主题发起人 yzj832
  • 开始时间 开始时间
Y

yzj832

Unregistered / Unconfirmed
GUEST, unregistred user!
例如数组111,222,333,表t1中字段sz如何查找出sz中是否有111这个数,是否有222这个数,是否有333这个数要求高效,最好不要重复打开关闭表,少遍历表
 
附加说明,数组和表中的数据都很多最好用程序说明
 
正常情况,当然是遍历数组,然后一个一个select count()如果不想的话,可以这样,1,建立一临时表(Table1), 一个字段也行(Field1)2,数组的每个元素都insert进去3,select Field1, (select count(*) from t1 where sz=t2.Field1) from Table1 t24,遍历查询结果。还有一种方法是select distinct sz from t1 order by sz然后把所有结果存到数组再在两个数组间直接比较就可以了.当然数据量比较大的话,比较时可以半分法之类的。因为数组是大小排序的,没必要一直从头开始这可能是最快的这种没有很好的方法的吧,
 
1.查出数组中最小的数 minNum和最大的数 maxNum;2.query控件: select sz from t1 where sz>=minNum and sz<=maxNum order by sz3.循环遍历数组,针对每一个元素判断是否在数据库中存在时,直接对上面的query进行filter就可以了。4.对于第一个元素的filter,速度有点慢,后面的基本可以忍受。5.如果你的数组是有序的,在2的基础上,就可以不通过filter,而通过其它一些优化的方案,就可以提高判断速度。------------将filter来判断更改为通过Locate方式来判断,不知道是否可以加快速度,没测试过,呵呵
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部