SELECT count( distinct set_ID) FROM ad_send_get WHERE 条件
执行了140S
SELECT count( set_ID) FROM ad_send_get WHERE条件
就是15秒
我把它写在存储过程里也试了,这个本身是一个视图
怎么优化呀

解决方案 »

  1.   

    你的数据有多少啊?还有where后面的条件是什么?最好贴出详细代码,还有这个问题放到sql版块中去提问效果应该会好很多。
      

  2.   

    where后面的条件并不影响,就是distinct影响的
      

  3.   

    不要distinct ,然后把数据读到内存中,自己去统计并过滤;
      

  4.   

    楼上的办法我试了,时间比直接写 sql还长
      

  5.   

    你的视图可能本来就建得不好,加上条件之后更加慢把所有的sql语句都给出来,也许能帮你优化一下。或者你自己到事件探查器里头去慢慢优化吧。
      

  6.   

    添加索引
    SELECT count( distinct set_ID) FROM ad_send_get WHERE 条件
    ==========
    SELECT count(1) from ad_send_get where  set_ID in (select( distinct set_ID) FROM ad_send_get WHERE 条件)
      

  7.   

    在你的where条件上加入索引试试看,lz最好把你的视图的基本信息跟where条件稍微说一下,哪怕用别名~
      

  8.   

    SELECT count(1) FROM ad_send_get WHERE 条件 group by set_ID
      

  9.   

    加索引,优化 where  条件
      

  10.   

    去重复时间比较长 distinct加索引.
      

  11.   

    首先,视图的操作时间是比较长的
    然后,不要用distinct,后面直接加group by,分组查询
      

  12.   


    --试试这样
    SELECT count( set_ID) FROM ad_send_get WHERE条件 group by set_ID