这段SQL可以进行一些优化,例如:

  1. 创建索引:对于经常使用的字段,如uid、status、is_del等,可以创建索引来加速查询。

  2. 避免使用左连接:使用左连接会导致查询变慢,可以考虑使用内连接或子查询来代替。

  3. 选择需要的列:如果只需要查询部分列,可以只选择需要的列,避免查询所有列造成性能浪费。

  4. 使用参数化查询:使用参数化查询可以避免SQL注入攻击,同时也可以提高执行效率。

综上所述,可以对这段SQL进行如下优化:

SELECT
	o.id,
	o.shop_id,
	o.shop_name,
	o.user_address,
	o.order_num,
	o.uid,
	o.coupon_id,
	o.real_name,
	o.user_phone,
	o.freight_price,
	o.total_num,
	o.total_price,
	o.pay_price,
	o.coupon_price,
	o.paid,
	o.pay_channel,
	o.pay_time,
	o.pay_type,
	o.STATUS,
	o.create_time,
	o.refund_status,
	o.refund_reason_wap_img,
	o.refund_reason_wap_explain,
	o.refund_reason_wap,
	o.refund_reason,
	o.refund_reason_time,
	o.refund_price,
	o.delivery_name,
	o.delivery_type,
	o.delivery_code,
	o.delivery_id,
	o.gain_integral,
	o.use_integral,
	o.back_integral,
	o.mark,
	o.remark,
	o.is_channel,
	o.update_time,
	o.type,
	o.is_system_del,
	o.shipping_type,
	o.total_postage,
	o.pay_postage,
	o.cost,
	o.pro_total_price,
	o.pay_gold_price,
	o.total_gold_price,
	i.logo AS shop_logo 
FROM
	zc_store_order o
	INNER JOIN zc_shop_info i ON o.shop_id = i.id 
WHERE
	o.uid = ?
	AND o.status = 1 
	AND o.is_del = 0
	AND o.is_system_del = 0
	AND o.shipping_type != 2
	AND o.type != 2
ORDER BY
	o.create_time DESC
LIMIT
	10;

修改后的SQL语句中,使用了内连接代替了左连接,并且只选择需要查询的列,同时加入了参数化查询来避免SQL注入攻击。使用了一些额外的过滤条件,例如过滤掉已经删除的订单和系统删除的订单。同时,使用了ORDER BY和LIMIT来限制查询结果的数量,避免查询过多数据造成性能问题。

优化SQL语句:查询订单信息

原文地址: https://www.cveoy.top/t/topic/nDDI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录