关于优化ecshop后台用户留言列表加载慢的问题

2016-09-11 20:38 来源:www.chinab4c.com 作者:ecshop专家

在Ecshop论坛看有些兄弟说是留言太多形成的,居然还有很多人信任,就不定期的删留言,真是害人啊!办理Ecshop的人,小小的看看,就晓得不是这个疑问,那么户留言打开慢到底是为什么呢?根本原因是数据表索引疑问,加一个索引,就万事大吉。
下面绿色框里面是网上的解决办法,治标不治本啊!而其这种方法会让“回复”排序不能用。(建议不要采用)
Ecshop后台用户留言打开慢的原因是mysql查询语句的问题,估计是LEFT JOIN同一张表而造成的

"FROM " . $GLOBALS['ecs']->table('feedback') . " AS f ".
"LEFT JOIN " . $GLOBALS['ecs']->table('feedback') . " AS r ON r.parent_id=f.msg_id ".

修改如下:
一、修改查询语句为:

$sql = "SELECT f.msg_id, f.user_name, f.msg_title, f.msg_type, f.order_id, f.msg_status, f.msg_time, f.msg_area " .
            "FROM " . $GLOBALS['ecs']->table('feedback') . " AS f ".
            //"LEFT JOIN " . $GLOBALS['ecs']->table('feedback') . " AS r ON r.parent_id=f.msg_id ".
            "WHERE f.parent_id = 0 $where " .
            "GROUP BY f.msg_id ".
            "ORDER by $filter[sort_by] $filter[sort_order] ".
            "LIMIT " . $filter['start'] . ', ' . $filter['page_size'];


二、在下面的foreach里面增加:

$msg_list[$key]['reply'] = $GLOBALS['db']->getOne("sel ect count(msg_id) reply from  ".$GLOBALS['ecs']->table('feedback')." where parent_id ='".$value['msg_id']."'");