mysql - MySQL 中的嵌套查询非常慢。如何优化呢?

标签 mysql sql performance

我有一张 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/

相关文章:

sql - 仅当存在时才可以 DROP FILTER PREDICATE 吗?

SQL Server 锁定整个表,尽管不需要

windows - 为什么 Powershell 中的 Get-WMIObject Win32_Process 如此慢,有哪些替代方案?

java - 在抽屉导航 fragment 之间切换很慢

mysql - 在 vs 中使用存在于 mysql 上

sql - 如何使用 GROUP BY 连接 MySQL 中的字符串?

mysql - 聚合函数作为mySQL中的参数

Scala理解能力的表现

mysql - Sequelize ORM在选择中添加主键列,而我排除了它

MySQL View 执行时返回多行错误