gpt4 book ai didi

mysql - 我怎样才能加快这个MySQL查询?

转载 作者:行者123 更新时间:2023-11-29 05:20:16 25 4
gpt4 key购买 nike

我必须优化这个查询:

SELECT DISTINCT
sfo.entity_id,
sfo.created_at,
sfoa.postcode,
sfo.customer_id
FROM sales_flat_order sfo
JOIN sales_flat_order_address sfoa
ON sfo.entity_id = sfoa.parent_id
WHERE sfo.entity_id IN (SELECT DISTINCT
order_id
FROM sales_flat_order_item
WHERE sku = 'whatever'
OR sku = 'whatever1')

这会运行一段时间,我猜是因为子选择。我知道在这里使用 join 可能会加快速度,但到目前为止我没能让它发挥作用。关于如何加快速度的任何想法?

谢谢!

最佳答案

我会把它作为一个额外的加入级别。

像这样:-

SELECT DISTINCT
sfo.entity_id,
sfo.created_at,
sfoa.postcode,
sfo.customer_id
FROM sales_flat_order sfo
INNER JOIN sales_flat_order_address sfoa
ON sfo.entity_id = sfoa.parent_id
INNER JOIN sales_flat_order_item sfoi
ON sfo.entity_id = sfoi.order_id
WHERE sku IN ('whatever', 'whatever1')

假设您在 sales_flat_order_item 表的 sku 字段上有一个索引,在 sales_flat_order 表上的 entity_id 上有一个索引,在 sales_flat_order_address 表上的 parent_id 上有一个索引,那么这应该很快。

如果没有索引,几乎任何查询都会运行得很慢。

关于mysql - 我怎样才能加快这个MySQL查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26796602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com