我对 mysql 比较陌生,所以我希望你能为我指出正确的方向。我有两个表,“产品”是有关我们待售商品的信息,“报价”表是我们销售该产品的各个供应商的定价和供应商信息。两个表都有相关的“sku”列。 “报价”表中可以有多个供应商销售相同的 SKU。
当我查询产品表中的各种内容时,我只想要有供应商从“优惠”表中销售该产品的结果。现在我正在使用如下查询:
SELECT *
FROM products
WHERE
products.sku IN (SELECT offers.sku FROM offers)
AND
products.name = 'Iphone'
AND
blah.....
对于有很多结果的查询,这可能需要比我想要的更长的时间。有没有更有效的方法来查询这两个表?也许通过 JOIN 来实现?谢谢。
最佳答案
EXISTS
或 JOIN
可能比 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/