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

时间:2015-12-17 20:27:36

标签: mysql select join

我对mysql比较陌生,所以我希望你能指出我正确的方向。我有两张桌子,'产品'是有关我们待售物品的信息,以及'提供'表格是我们销售该产品的各个供应商的定价和供应商信息。这两张桌子都有' sku'相关的列。 “优惠”中可能有多家供应商。桌子卖同样的sku。

当我在产品表中查询各种事物时,我只想要一个供应商从“'产品”中销售产品的结果。表。现在我使用的查询如下:

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

对于包含许多结果的查询,这可能比我想要的时间更长。有没有更有效的方法来查询这两个表?也许加入?谢谢。

1 个答案:

答案 0 :(得分:0)

EXISTSJOIN可能比IN更高效,但并不能保证优化程序不会将以下内容视为您的查询。

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

索引sku以及过滤条件中使用的其他字段可能是您正在寻找的性能的重大提升。