通过NAME字段条件查询一个数据表,假设我有100个姓名,有以下两个方法,
方法1:
把100个Name 组成一个SQL语句,比如 Select * from tmp_table where Name='张三' or Name ='李四' Or ...Or Name='第一百个姓名'方法2:
通过循环100次,每次执行一个Name条件,执行100个SQL语句
Select * from tmp_table where Name='张三'
Select * from tmp_table where Name='李四'
......
Select * from tmp_table where Name='第一百个姓名'
这两种方法那个速度更快一些?
方法1:
把100个Name 组成一个SQL语句,比如 Select * from tmp_table where Name='张三' or Name ='李四' Or ...Or Name='第一百个姓名'方法2:
通过循环100次,每次执行一个Name条件,执行100个SQL语句
Select * from tmp_table where Name='张三'
Select * from tmp_table where Name='李四'
......
Select * from tmp_table where Name='第一百个姓名'
这两种方法那个速度更快一些?
如果只用sql处理,1楼方法好;如果用pl/sql处理,可以用你的方法2,但要使用绑定变量
Select * from tmp_table where Name=:v_name;
select * from tmp_table where name in(一百个名字)我记得好像IN 在SQL语句里不是最慢的。不知道是不是
to tangren:in的列表项不能超过1000
学习了,之前一直都没有这样一个概念。
建立临时表倒是比较好的方法,但是总感觉有点麻烦,需要建表,然后插入100个NAME,然后关联查询,查询完还要删除表,有没有更好的方法呢?
不想建 临时表 那就with table 呵呵
我个人常碰到这情况,我用PB,我建了一个表,在grid中插入100个人名,先delete table ,再一次update,再查询,再rollback;
with table用不了
in跟or效率一样的,只是不同写法而已。