不要使用 in ,用 exists 代替。效率高很多 !!

解决方案 »

  1.   

    exists用法:
    比如有个表 table1(s1 varchar2(2)):里面有记录 1,2,3,4 ... 10;
              table2(s2 varchar2(2)):里面有记录 1,2,3.
    要选择出在table1在table2中的记录:select s1 from table1 a where exists
           (select 1 from table2 b where b.s2=a.s1);
      

  2.   

    sql1="SELECT count(d.aa) FROM a, b, c, d, e WHERE a.id='" + DEALER."' AND d.aa='" + PNAME + "'  AND A.type='P' AND a.ckdate LIKE '" + date + "%' AND e.id=a.did AND b.did=a.did AND b.id=c.id AND  a.pid=d.pid ORDER BY aa";
    ..................
    ..................
    for (i=1; i<=9; i++) {
    sql2="SELECT count(d.aa) FROM a, b, c, d, e WHERE a.id='" + DEALER."' AND d.aa='" + PNAME + "'  AND a.type='P' AND a.ckdate LIKE '" + date + "0" + i + "%' AND e.id=a.did AND b.did=a.did AND b.id=c.id AND  a.pid=d.pid ORDER BY aa";
    .................
    .................
    }
    for (i=1; i<=31; i++) {
    sql3=SELECT count(d.aa) FROM a, f, c, d, e WHERE a.id='" + DEALER."' AND d.aa='" + PNAME + "'  a.type='P' AND a.ckdate LIKE '" + date + "0" + i + "%' AND e.id=a.did AND f.did=a.did AND f.id=c.id AND  a.pid=d.pid ORDER BY aa";
    .................
    .................}
    .......................................
    .......................................是的,不过还是很慢,建临时表好不好,昨天在程序中建了一个,然后在结束后删掉,还是很慢,跑不出来.昏..