Powered by Typecho)))
Optimized by EAimTY
大部分时候,两个大表做join的时候,where条件前置不但可以节省扫描行数,还能避免创建磁盘临时文件:
优化前:
SELECT g.goods_id, g.add_time, g.goods_name, g.market_price, g.is_new
, g.is_best, g.is_hot, g.shop_price AS org_price
, IFNULL(mp.user_price, g.shop_price * '1.00') AS shop_price
, g.promote_price, g.promote_start_date, g.promote_end_date, g.goods_thumb, g.goods_img
, g.goods_brief, g.goods_type
FROM `ecshop`.`fp_goods` g
LEFT JOIN `ecshop`.`fp_member_price` mp
ON mp.goods_id = g.goods_id
AND mp.user_rank = '1'
WHERE (g.is_delete = 0
AND g.is_on_sale = 1
AND g.is_alone_sale = 1
AND 1)
ORDER BY goods_id DESC
LIMIT 200, 40