解决方案 »

  1.   

    主要是想让aid 从大到小排序。现在是从小到大,速度还行,但加上order by aid desc速度就慢下来了。怎么优化?
      

  2.   

    aid是主键还是什么?有索引吗?
      

  3.   

    请贴出 desc sql结果
      

  4.   


    if(empty($wheresql)){
    $wheresql="where aid>=(SELECT aid FROM `tj_logs` LIMIT $sqlfirst,1) order by aid desc limit $shownu";
    }else{
    $wheresql.=" and aid>=(SELECT aid FROM `tj_logs` LIMIT $sqlfirst,1) order by aid desc limit $shownu";
    }
    $query=mysql_query("SELECT DISTINCT A.*,B.url,C.username FROM `tj_logs` A LEFT JOIN `tj_domain` B ON A.wid=B.wid LEFT JOIN `tj_members` C ON A.uid=C.uid $wheresql");
      

  5.   

    不明白你的 aid>=(SELECT aid FROM `tj_logs` LIMIT $sqlfirst,1) 是什么意思
    作用是什么?
      

  6.   

    优化后分页。本来就一句是这样的:$query=mysql_query("SELECT DISTINCT A.*,B.url,C.username FROM `tj_logs` A LEFT JOIN `tj_domain` B ON A.wid=B.wid LEFT JOIN `tj_members` C ON A.uid=C.uid order by A.aid desc limit $sqlfirst,$shownu");
    但速度太慢了,才改成了上述的写法。
      

  7.   

    EXPLAIN 你的查询指令
    看看结果
    wid、uid 都应有索引
      

  8.   

    这种数据数量,三张表联查,容易slowquery的。解决了暂时的问题,以后也会出问题。改变下查询方式吧。