SELECT DISTINCT(STRSITEID) FROM TBL_SMT_USESITEINFO WHERE STRLINEID='26B05F14L'
 AND STRSITEID NOT IN (SELECT DISTINCT(STRSITE) FROM TBL_SMT_REELUPINFO
WHERE SEQ=1 AND STRSITEID='26B05F14L')哪位高人能幫我優化一下這個SQL語句,因為數據量太大,用IN不妥,造成DB出問題.

解决方案 »

  1.   

    SELECT DISTINCT(STRSITEID) FROM TBL_SMT_USESITEINFO WHERE STRLINEID='26B05F14L'
     AND  NOT EXISTS (SELECT DISTINCT(STRSITE) FROM TBL_SMT_REELUPINFO
    WHERE SEQ=1 AND STRSITEID='26B05F14L')
      

  2.   

    不是很好,用EXISTS還是有點慢的,不過還是謝謝您倆!謝謝
      

  3.   

    嘿嘿,对数据库不太熟悉,可能是偶的理解有问题,只是觉得不需要子查询吧?如果SEQ是整数的话
    select distinct(STRSITEID) from FBL_SMT_USESITEINFO where STRLINEID='26B05F14L' and SEQ>1
    union all
    select distinct(STRSITEID) from FBL_SMT_USESITEINFO where STRLINEID='26B05F14L' and SEQ<1STRILINEID和SEQ上建索引
      

  4.   

    不要一次把所有数据都查出来,你依次可以查10条呀,我在分页里是这么做的,借用一下你的sql语句,自己电脑上没公司的项目。
    int pagerecord=10;
    int currentpage=1; (当前的页码);
    SELECT DISTINCT TOP '"+pagerecord+"' STRSITEID FROM TBL_SMT_USESITEINFO WHERE STRLINEID='26B05F14L'
     AND STRSITEID NOT IN (SELECT DISTINCT TOP '"+(currentpage-1)*pagerecord+"' (STRSITE) FROM TBL_SMT_REELUPINFO
    WHERE SEQ=1 AND STRSITEID='26B05F14L')这样每次查10条就不会影响速度了吧
      

  5.   

    wjs2338(wjs)寫的也對,只是我的是寫在JSP頁面,不能用TOP的哦!謝謝,同樣學到一點技巧。