2015-09-15 58 views
1

我有這個疑問:MySQL查詢優化,比較3個表W /幾千條記錄

SELECT L.sku,L.desc1,M.map,T.retail FROM listing L INNER JOIN moto M ON L.sku=M.sku INNER JOIN truck T ON L.sku=T.sku LIMIT 5; 

每個表(上市,摩托車,汽車)具有〜300.000行,只是爲了測試purppose我給自己定一個LIMIT的5結果,最後我將需要數百,但讓我們看...

該查詢需要像在控制檯3:26分鐘...我不會想象它將需要多少PHP ...我需要處理它

任何意見/解決方案,以優化查詢?謝謝!

+1

優化依賴於表結構。但加入查詢肯定是很昂貴的事情。請嘗試避免加入,並查找是否有其他選項可用。 – satroy

回答

3

兩件事情到這裏推薦:

  • 指標
  • 非規範化

一件事的人往往當數據庫獲得海量要做的就是調用非規範化。這是將多個表中的數據存儲在一張表中以防止需要執行join。如果您的應用程序依靠特定的讀取來驅動它,這非常有用。這是縮放時常用的策略。

如果Denormalization是出了問題,另一個,以優化該查詢簡單的方法是,以確保你對列指標正在運行的join反對。因此,需要將索引列爲L.sku,m.sku,T.sku,您會立即注意到性能有所提高。

任何其他優化我需要一些關於數據的更多信息,希望它有幫助!

+1

我用於處理小型數據庫,所以我從來沒有使用INDEXES,現在我做了,它花了不到一秒鐘:) thx – xnanitox