我对mysql比较新,所以我希望你能指出我的方向。我有两张表,'产品'是关于我们要销售的产品的信息,'产品'表是来自我们销售该产品的不同供应商的定价和供应商信息。两个表都有相关的'sku'列。 'offer'表中可以有多个供应商销售相同的sku。MySQL在WHERE语句中使用SELECT - 最佳方式?
当我查询产品表中的各种东西时,我只想要一个供应商从'offer'表中销售它的结果。现在我使用的查询关键词,比如:
SELECT *
FROM products
WHERE
products.sku IN (SELECT offers.sku FROM offers)
AND
products.name = 'Iphone'
AND
blah.....
这可能需要更长的时间比我要在具有许多结果的查询。有没有更有效的方法来查询这两个表?也许用JOIN?谢谢。
将其转换为JOIN语法可能会具有与优化程序通常非常智能相同的性能。谓词中的数据类型和索引是什么? 'products.sku','products.name'等。 – Matthew
products.sku是主键,因此它有自己的索引,而offers.sku也有它自己的索引。数据类型都是CHAR(12),因为我们所有的skus都是12个字符长。 –
您可以忽略查询中的'sku'谓词以验证它实际上是导致性能问题的原因吗? – Matthew