MySQL 在 WHERE 语句中使用 SELECT - 最好的方法?

标签 mysql select join

我对 mysql 比较陌生,所以我希望你能为我指出正确的方向。我有两个表,“产品”是有关我们待售商品的信息,“报价”表是我们销售该产品的各个供应商的定价和供应商信息。两个表都有相关的“sku”列。 “报价”表中可以有多个供应商销售相同的 SKU。

当我查询产品表中的各种内容时,我只想要有供应商从“优惠”表中销售该产品的结果。现在我正在使用如下查询:

SELECT *
FROM products
WHERE
products.sku IN (SELECT offers.sku FROM offers)
AND
products.name = 'Iphone'
AND
blah.....

对于有很多结果的查询,这可能需要比我想要的更长的时间。有没有更有效的方法来查询这两个表?也许通过 JOIN 来实现?谢谢。

最佳答案

EXISTSJOIN 可能比 IN 性能更高,但这并不能保证您的优化器不会处理以下情况与您的查询相同。

SELECT *
FROM products
WHERE EXISTS ( SELECT 1
               FROM offers 
               WHERE products.sku = offers.sku)
AND     products.name = 'Iphone'
AND    blah.....

sku 和过滤条件中使用的其他字段建立索引可能会大大提高您所寻求的性能。

关于MySQL 在 WHERE 语句中使用 SELECT - 最好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34343650/

相关文章:

MySQL Group By 和 Sum 其他列的总值

MySQL:插入时基于 MAX() 子查询安全地自动递增 MySQL 字段

C++ select() 不等待超时时间

c# - ASP.NET:GridView 选择按钮:如何以编程方式更改按钮的属性?

SQL:如何限制第一个找到的行的连接?

mysql - 为什么在 MySQL 中使用 20,000 年会有不同的结果

mysql - 加入两个mysql表并按日期显示数据

php - 在 while 循环期间根据值预选择下拉选项

database - oracle文法转h2文法(+)join table

php - 在 mySQL 中加入三个表?