有一个winform程序
一个只有一列的datagridview,是几千条(也有可能是几万条)身份证号记录(此数据是从excel导入的)
数据库中有10多万条客户信息(如姓名、身份证、联系方式等)
然后我想实现的功能是,根据datagridview内的身份证数据,从数据中查出该身份证对应的相关信息,并在另一个datagridview中展现出来。
我现在使用的方法是 select * where sfzh in (),的办法,(注,in 函数不能超过1000条的问题已经解决,使用 拼接or in ()的方法
现在的问题是:
程序运行很慢,查询3000条数据,要10多分钟。
求助:如何查会快一些呢?
试试将身份证号记录插入到一个临时表中,再与数据表关联查询 建一个表,把这3000条身份证记录插进去,和数据表关联查询,看看效率能提升多少
数据表的身份证号字段上要有一个索引 with t as( select '身份证1' as sfz from dual union select '身份证2' as sfz from dual union select '身份证2' as sfz from dual ) SELECT DGV.* FROM datagridview DGV WHERE EXISTS( SELECT 1 FROM T WHERE T.SFZ = DGV.SFZ ) 以上. WITH T 构造的结果集,可以动态扩展例如: select '身份证1' as sfz from dual union select '身份证2' from dual union select '身份证3' from dual union select '身份证4' from dual union select '身份证5' from dual union select '身份证6' from dual