2017-05-26 128 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);