一条SQL 中,里面有两个 IN 集合语句。问题出在第二个IN 上。本身 SELECT IN 查询的是一个视图.视图不慢.有什么方法能把 IN 转化为别的查询,加快查询速度么?请高手解答.谢谢。

解决方案 »

  1.   

    把SQL帖出来~ 
    基本上是IN 换 EXISTS
      

  2.   

    谁有什么高招?
    in(111,22,432,52,423,4532,4321,342,432432,12323,432)这个IN 里的内容很长.影响速度。
      

  3.   

    在 MS SQL SERVER 中可以这样
    把 f_filed in ( select ... table where ... ) 替换成 
    exists ( select top 1 1 from ... table where ... and 关键表.f_filed = table.与f_filed相对应的字段 )同样的代码在sql plus 中执行,则报错,说 未找到预期的关键字 from 。 换另一种方式
    exists ( select 与f_filed相对应的字段 from ... table where ... and 关键表.f_filed = table.与f_filed相对应的字段 )
    在sql plus 中可以执行。
    不过俺在vc++ 使用记录集类的程序中也不行。甚至没有错误描述。
      

  4.   

    基本上是IN 换 EXISTS
    或者改成连表处理
      

  5.   

    用动态的生成语句
    union 试试看
    select * from tbl where id=1
    union 
    select * from tbl where id=2