我對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