select top 20 b.name as schoolname,b.name as typename, *   from Market_SellDetail a join Market_dealer b on a.etId=b.etId join Market_Seller c on a.addby=c.sellerid where a.effective=1  and a.ID not in (select top 2980 a.ID from Market_SellDetail a join Market_dealer b on a.etId=b.etId join Market_Seller c on a.addby=c.sellerid where a.effective=1   order by a.createtime desc) order by a.createtime desc
这句SQL在查询分析器里查询要2分30多秒,有没有提高查询效率的办法??请大家帮忙

解决方案 »

  1.   

    一般有not in之类的就不会快到哪里去
      

  2.   

    Try
    select top 20 b.name as schoolname,b.name as typename, *  
    from Market_SellDetail a 
    join Market_dealer b on a.etId=b.etId 
    join Market_Seller c on a.addby=c.sellerid 
    where a.effective=1
      and not Exists(select 1 
                       from 
                           (
    select top 2980 a.ID 
    from Market_SellDetail a 
    join Market_dealer b on a.etId=b.etId 
    join Market_Seller c on a.addby=c.sellerid 
    where a.effective=1  order by a.createtime desc
                            ) T where a.ID=T.ID                 )
    order by a.createtime desc
      

  3.   

    --try
    not in -->not exists
      

  4.   

    select top 20
            b.name as schoolname,
            b.name as typename,
            *
    from    Market_SellDetail a
            join Market_dealer b on a.etId = b.etId
            join Market_Seller c on a.addby = c.sellerid
    where   a.effective = 1
            and a.ID not Exists (
            select top 2980
                    a.ID
            from    Market_SellDetail a
                    join Market_dealer b on a.etId = b.etId
                    join Market_Seller c on a.addby = c.sellerid
            where   a.effective = 1
            order by a.createtime desc )
    order by a.createtime desc 
      

  5.   

    不用NOT in 会快不少……
    加索引了吗?
    加了还能快一点
      

  6.   

    大数据批查询不用要IN NOT INT 
    添加索引
    这样会快些