本人目前需要操作20W条的记录表,现目的是要获得这个表的记录总数,需要连表查询,有查询条件,执行速度超级慢,已经超过能等待极限了  求优化方法???

解决方案 »

  1.   

    你的语句是什么? 如果仅是 select count(*) from tableName 则不会慢的。
    建议贴出你的实际SQL语句及
    explain select ...
    show index from ...
    以供分析。问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
      

  2.   

    SQL 语句(个人修改一次了,原来没使用COUNT方法需要1分钟以上,目前需要2-3秒)$sql  = 'select * from K1.A ';
    $sql .= 'JOIN K1.B ON K1.B.uid = K1.A.uid ';
    $sql .= 'JOIN K2.C ON K2.C.Uid = K1.A.uid ';
    $sql .= 'where `B`.`uTypeid` = 1 ';
    $sql .= 'ORDER BY A.uid DESC ';
    $number_sql = preg_replace('/\*/','COUNT(*) as number ',$sql);
    //echo $sql;
    //$query = $this->db->query($sql);
    $data['number'] = $this->db->query($number_sql)->row();
    $sql .= 'LIMIT 11 ';
    $query = $this->db->query($sql);
    表结构(K1,K2 表示两个数据库)
    A
      

  3.   

    A
    uid -》 索引

    uid -> 索引
    C
    Uid -》索引 
     三者相同联系
      

  4.   

    贴出执行计划explain select ....
    show index from 表