2017-05-26 88 views
0

我試圖理解爲什麼這個MySQL的語句是這麼長時間來加載..基本上我有3個表,每列都有VIN爲獨一無二的,每VIN中存在的所有的3的MySQL LEFT JOIN花費過多時間

SELECT * FROM vehicle_information i 
LEFT JOIN vehicle_extra e on i.vin = e.vin 
LEFT JOIN Images im on i.vin = im.vin 

我有大約4000酒精應該填充,它需要大約10秒..我試圖搜索一個特定的行使用相同的查詢,並在末尾添加Where子句,它需要0.05秒 我錯過了什麼這裏 ?

附加說明 enter image description here

+0

請添加查詢計劃 –

+0

使用'EXPLAIN'的https: //dev.mysql.com/doc/refman/5.7/en/explain.html找到執行計劃,您可能會丟失索引或2. – JanR

+0

@JanR更新與解釋.. –

回答

1

它看起來像我錯過了其他2個表中唯一的,設定VIN作爲唯一的所有表和不僅率先解決了這一問題

+0

一個很好的教訓。嘗試加入未指定列的表格掃描和性能較差。 –

-3

可以請您嘗試使用其中類似的條款: 選擇TAB1 *,tab2.c1,tab2.c2,tab3.c4,tab3.c5從表1 TAB1,TAB2表2,表3 tab3其中tab1.id = tab2.id和tab1.id = tab3.id。 這種查詢類型對您有幫助嗎? 嘗試在表格中添加索引。

+1

使用古董和非ansi標準連接語法不會奇蹟般地解決性能問題。 –

0

嘗試在表上添加索引。

CREATE INDEX index_name ON Table1 (ID);