MySQL的左连接优化
问题描述:
我有2个表:MySQL的左连接优化
-
formfill
有列idmessage
,value
,namefield
。 -
fields
具有列namefield
,typefield
,optionsfield
。
我没有任何主键。关系在名称栏之间。
我的查询是:
select e.namefield,e.typefield,e.optionsfield,b.value,b.id
from fields as e
left join formfill as b on e.namefield = b.namefield and b.id=1011
这个查询就可以了。但它运行非常缓慢(约10秒)。我怎样才能让它更快?
答
你或许应该用
http://dev.mysql.com/doc/refman/5.0/en/explain.html
但发表您的查询计划查询执行的低速migh意味着
你没有索引,引擎必须做全扫描,所以最好在有''等操作的字段上添加索引。索引的类型可以是“散列”如果您使用=或<>和B树用于操作等<或>
在右表中的行的数目大于一在左边的表中的10幅值和更多,所以索引将没有多大帮助,你将需要考虑分区数据
你已经添加了必要的索引到表? – defuz
您需要添加索引。你可以发布'EXPLAIN SELECT e.namefield ...'的结果吗? – Kermit
这个查询在做什么?在第二张桌子上看到一个左外连接有限制是有点不寻常的。通常,当选择一个id时,你需要这个id。但是这个查询更一般。你真的认为是一个正确的外部连接吗? –