优化SQL查询?

时间:2015-06-22 10:15:59

标签: mysql query-optimization

我有一个查询,我想要选择所有拥有特定product_id订单的客户(例如12,13)。我为此做了一个小提琴。有一个订单表,其中包含order_id和customer_id。 Order_detail表有order_id和product_id。这些是样本表。原始表包含超过30000条记录。您可以帮我优化查询或指导我这样做吗?

http://sqlfiddle.com/#!9/838da/3

2 个答案:

答案 0 :(得分:1)

select c.* from customer_detail c 
inner join orders o on o.customer_id = c.customer_id
inner join order_detail od on od.order_id = o.order_id
where od.product_id in (12,13);

我认为这就是你要找的东西。

答案 1 :(得分:1)

您可以使用以下最终查询 -

SELECT customer_id,first_name 
FROM customer_detail cd 
JOIN orders ors ON cd.customer_id=ors.customer_id 
JOIN order_detail od ON od.order_id=ors.order_id 
WHERE product_id IN (12,13); 

注意:下面的字段应编入索引 - customer_id IN订单表 order_id AND product_id IN order_detail TABLE