查询一:
SELECT `order`.id,`order`.quantity
FROM `order` LEFT JOIN `coupon` ON `order`.id = coupon.order_id
WHERE `order`.team_id=162查询二:
SELECT id,user_id,quantity ,(select count(id) FROM coupon where order_id=`order`.id) as sumq FROM `order` where `team_id`=162这两个查询都很慢
查询结果是120条表order约有4万条数据,表coupon约有5万条数据
SELECT `order`.id,`order`.quantity
FROM `order` LEFT JOIN `coupon` ON `order`.id = coupon.order_id
WHERE `order`.team_id=162查询二:
SELECT id,user_id,quantity ,(select count(id) FROM coupon where order_id=`order`.id) as sumq FROM `order` where `team_id`=162这两个查询都很慢
查询结果是120条表order约有4万条数据,表coupon约有5万条数据
在order的order_id上创建索引
在order的team_id上创建索引
coupon.order_id 建立索引
explain SELECT `order`.id,`order`.quantity
FROM `order` LEFT JOIN `coupon` ON `order`.id = coupon.order_id
WHERE `order`.team_id=162explain SELECT id,user_id,quantity ,(select count(id) FROM coupon where order_id=`order`.id) as sumq FROM `order` where `team_id`=162另外用 show index from tabl1 命令把相关表的索引情况贴出来以供分析。
没有索引的,建立team_id、order_id组合做引,然后explain 2个sql语句,看看走没有走索引。
SELECT
id,
user_id,
quantity,
(SELECT
COUNT(id)
FROM coupon
WHERE order_id = `order`.id) AS countq
FROM `order`
WHERE `team_id` = 162
AND `order`.state = 'pay'
AND `order`.delivery = 'coupon'用时3.594秒
SELECT
`order`.id,
`order`.quantity,
COUNT(coupon.id)
FROM `order`,
coupon
WHERE `order`.team_id = 162
AND `order`.state = 'pay'
AND `order`.delivery = 'coupon'
AND `order`.id = coupon.order_id
GROUP BY `order`.id
用时0.296秒
SELECT
`order`.id,
`order`.quantity,
COUNT(coupon.id)
FROM `order`
LEFT JOIN coupon
ON (`order`.id = coupon.order_id)
WHERE `order`.team_id = 162
AND `order`.state = 'pay'
AND `order`.delivery = 'coupon'
GROUP BY `order`.id用时3.406秒
`order`.id,
`order`.quantity,
COUNT(coupon.id)
FROM `order`,
coupon
WHERE `order`.team_id = 162
AND `order`.state = 'pay'
AND `order`.delivery = 'coupon'
AND `order`.id = coupon.order_id
GROUP BY `order`.id;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE coupon ALL 48154 Using temporary; Using filesort
1 SIMPLE order eq_ref PRIMARY PRIMARY 8 zuituan.coupon.order_id 1 Using where
楼主似乎并不认真看别人的回复!
你的show index 都贴在哪儿了?从你的EXPLAIN来看,你的表中似乎根本没有创建索引。