在zch、nbxh、clrq创建索引select zch,fddbr,zs,qymc from hz_qyhznr 
where 
zch like '3307823%'
and exists (select 1 from nbxh hz_yhzjl where hz_yhzjl.nbxh = hz_qyhznr.nbxh ae_y in ('2000','2001'))
and clrq<todate('2000-12-31','yyyy-mm-dd')
order by zch;

解决方案 »

  1.   

    bzszp(SongZip)的第七行应该是
    and clrq<to_date('2000-12-31','yyyy-mm-dd')
      

  2.   

    单独对zch、nbxh、clrq三个字段创建索引,
    要不然首先在你的子查询都可能浪费很多时间,因为它是全文检索。
      

  3.   

    不能够用not in, 需要用not exist 代替!用NOT EXISTS替代NOT IN在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历).  为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS. 例如:SELECT …FROM EMPWHERE DEPT_NO NOT IN (SELECT DEPT_NO                          FROM DEPT                          WHERE DEPT_CAT=’A’); 为了提高效率.改写为: (方法一: 高效)SELECT ….FROM EMP A,DEPT BWHERE A.DEPT_NO = B.DEPT(+)AND B.DEPT_NO IS NULLAND B.DEPT_CAT(+) = ‘A’  (方法二: 最高效)SELECT ….FROM EMP EWHERE NOT EXISTS (SELECT ‘X’                     FROM DEPT D                    WHERE D.DEPT_NO = E.DEPT_NO                    AND DEPT_CAT = ‘A’); 
      

  4.   

    select nbxh from hz_yhzjl
    minus
    select nbxh from hz_qyhznr;