我有一张 Hall_products table ,上面有产品。每件产品都有一个名称,按指定数量出售,并且仅销往 CITY_CODE 指定的一个城市。 现在下一个表是delivery_address。每个送货地址都是一个城市,它包含一个CITY_CODE和MAX_QUANTITY,MAX_QUANTITY是可以发送到该城市的产品的最大数量(无论什么产品)。
例如,我有一种产品牛奶,数量为 1 升,寄往城市,代码为 14,表示柏林。 我可以发送到柏林(城市代码 14)的最大 cargo 数量为 0.7 升。因为数量高于 max_quantity,所以我将牛奶运送到柏林。
我想要得到的是所有可以运往世界任何地方的 cargo 的名称。所以我需要获取符合目标城市 max_quantity 限制的所有商品。
我为此编写了这个查询:
SELECT p.NAME FROM hall_products as p where p.QUANTITY >
(SELECT MAX_QUANTITY from delivery_address WHERE CITY_CODE = p.CITY_CODE )
但是这个查询太慢了。
如何在不更改数据库架构(即仅更改查询)的情况下使其更快?
最佳答案
在一般情况下,连接被认为比嵌套查询更好。但在某些情况下,嵌套查询的性能可能比联接更好。
尝试此查询并比较结果。
SELECT p.NAME
FROM hall_products as p, delivery_address as d
where p.QUANTITY < d.MAX_QUANTITY and d.CITY_CODE = p.CITY_CODE
关于mysql - MySQL 中的嵌套查询非常慢。如何优化呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5180161/