2016-11-25 164 views
0

我寫了一個SQL查詢,但其花費過多時間從table.Around取得成果15000項有沒有在我的table.My查詢和表結構如下..查詢花太長時間執行

SELECT sp1.sku 
FROM `service_prices` AS sp1 
WHERE attribute_id = 8 AND 
     attribute_value = '100000' AND 
     service_id = 2 AND 
     sp1.sku IN 
     (
      SELECT sp2.sku 
      FROM `service_prices` AS sp2 
      WHERE attribute_id = 9 AND 
       attribute_value = '2' AND 
       service_id = 2 AND 
       sp2.sku IN 
       (
        SELECT sp3.sku 
        FROM `service_prices` AS sp3 
        WHERE attribute_id = 10 AND 
          attribute_value = 'Haryana' AND 
          service_id = 2 
       ) 
      ) 

enter image description here

任何幫助將不勝感激。

+0

請在代碼中插入新行以方便閱讀。 – msagala25

回答

2
SELECT 
    sp1.sku 
FROM 
`service_prices` AS sp1 
INNER JOIN `service_prices` AS sp2 ON sp1.sku= sp2.sku INNER JOIN `service_prices` AS sp3 ON sp2.sku= sp3.sku 
WHERE 
sp1.attribute_id = 8 
AND sp1.attribute_value = '100000' 
AND sp1 service_id = 2 and 
sp2.attribute_id = 9 
     AND sp2.attribute_value = '2' 
     AND sp2.service_id = 2 
and 
sp3.attribute_id = 10 
       AND sp3.attribute_value = 'Haryana' 
       AND sp3.service_id = 2 
+0

你應該提到,他應該在'sku'列中添加一個索引來加速連接。沒有這個,你的答案可能不會提供任何性能改進。 –

+0

您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第9行的service_id = 2和sp2.attribute_id = 9 AND sp2.attribute_value ='2'附近使用正確的語法 – Akhil

+0

@aniket Sharma感謝您的回答,它的工作正常但這些屬性是動態的,我怎樣才能使它動態。我已經把它放在循環中 – Akhil