gpt4 book ai didi

MySQL 查询使服务器崩溃?

转载 作者:行者123 更新时间:2023-11-29 01:45:46 29 4
gpt4 key购买 nike

在我的 MySQL 数据库中,我有两个表:'orders' 和 'orders_lines'。订单包含有关客户、订单日期等的信息。 Orders_lines 包含有关订购产品的数据,例如 product_id、价格、数量、税率等。

我目前正在构建一个搜索页面,我想在其中返回包含特定产品的订单。例如,我想返回所有 product_id 为 2 的订单。我想到了这样的查询:

SELECT * FROM orders WHERE order_id IN ( SELECT order_id FROM orders_lines WHERE product_id = 2 )

但是当我今天早上执行查询时,我不得不调用托管服务提供商以终止 MySQL 进程,因为它太繁重了。从来没有听说过,也不知道为什么,我现在很绝望。 orders 表包含大约 30,000 行,orders_lines 表大约包含 38,000 行。

欢迎提出我的数据库崩溃原因、如何更改查询以使其正常工作或如何实现显示包含特定产品的订单的目标的任何建议!

亲切的问候,

马丁

最佳答案

查询可以用JOIN(和GROUP BY)重写:

SELECT o.* 
FROM orders o
INNER JOIN order_lines ol
ON o.order_id = ol.order_id
WHERE ol.product_id = 2
GROUP BY o.order_id

或者最好 - 因为您只需要来自 orders 表的结果 - 使用 EXISTS:

SELECT * 
FROM orders AS o
WHERE EXISTS
( SELECT *
FROM orders_lines AS ol
WHERE ol.product_id = 2
AND ol.order_id = o.order_id
)

但在再次运行可能导致服务器故障的内容之前,请检查您的索引和 EXPLAIN

关于MySQL 查询使服务器崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7229677/

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