ecshop后台商品分页缺陷改进

2012-10-12 09:07 来源:www.chinab4c.com 作者:ecshop专家

     ecshop后台商品分页缺陷改进,这个看似简单的东西,但是实现起来却十分复杂。我们知道在ecshop后台管理商品的后台商品列表中,如果商品数据非常少,那么不是问题。如果在ecshop中,把几百万的商品存储在ecshop的ecs_goods表中的时候,你去分页,那么翻到最后几页的时候,你就发现十分痛苦了。

     来分析下ecshop后台商品列表分页代码,如果你是按照从第一到最后,那么他是类似这样的结构。

    select * from ecs_goods where is_delete=0 and is_real=1 $where limit $start, $pagesize;当我们翻到最后几页,也就是形成了select * from ecs_goods where is_delete=0 and is_real=1 $where limit 22222222, 10 这个时候就算你走索引,那也是非常慢的。

    这个时候,我们可以先找到这个起点,我们可以先检索出要排序的good_id,那么然后在做内链,就可以快速的找到要查询的数据了。

    $sql = " SELECT g.goods_id, goods_name, goods_type, goods_sn, shop_price, is_on_sale, is_best, is_new, is_hot, sort_order, goods_number, integral, " .
                    " (promote_price > 0 AND promote_start_date <= '$today' AND promote_end_date >= '$today') AS is_promote from (  SELECT goods_id from ".$GLOBALS['ecs']->table('goods')."   WHERE is_delete='$is_delete' $where  ORDER BY $filter[sort_by] $filter[sort_order] LIMIT " . $filter['start'] . ",$filter[page_size]) g1 , ".$GLOBALS['ecs']->table('goods')." g where g1.goods_id = g.goods_id  ORDER BY $filter[sort_by] $filter[sort_order]";

     修改成这个方式,我们发现,在ecshop默认的分页中,需要2分钟,我们现在只需要0.8秒就搞定。大大的ecshop商品分页缺陷改进。

      来源:http://www.chinab4c.com