SELECT t1.id, t1.order_no, t1.order_status, t1.pay_status,t1.shipping_status,
t1.pay_method, t1.invoice, t1.remark, t1.seller, t1.buyer, t1.site_id, t1.order_time, t1.pay_time,
t1.sign_for_time, t1.delivery_time, t1.subtotal, t1.freight, t1.invitation, t1.cope, t1.is_comment,t1.pay_discount FROM zcwl_order t1 LEFT JOIN
zcwl_order_shipping_address t2 ON t2.order_id = t1.id
WHERE t1.site_id ORDER BY t1.order_time DESC
这条sql语句需要查14秒 如何缩短时间?
ps:大概有1W条数据
ORDER BY t1.order_time DESC 加上倒序后查询会很慢 写在里面就可以了
创建索引,为什么提交不上
这大概是订单和收货地址表的连接查询。
情况1:看你返回值中没有t2的字段,如果不需要收货地址的字段可以不必要连表。
情况2:你可以不进行连表查询,可以先将收获地址表的数据获取存入数组,将该数组转化成array(order_id->array(id=>'',order_id=>'',name=>'张三',..))
这种方式。然后与订单表数据的数组通过order_id拼接。这种方式相对于连表来说多耗内存,复杂点,但对数据库压力相比较小。
获取t1所有字段时可以用t1.*,而不必要写那么多字符了。
上面这只是我的个人观点,你可以试试看,测测运行时间。
WHERE t1.site_id ORDER BY t1.order_time DESC
该语句是不是有什么问题,t1.site_id =?
通过创建关联表的索引可以提高查询的速度,另外也可先通过对zcwl_order 的条件筛选再进行连表操作