3

我有 2 张桌子:

  • 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 秒)。我怎样才能让它更快?

4

1 回答 1

1

您可能应该发布您的查询计划

http://dev.mysql.com/doc/refman/5.0/en/explain.html

但查询执行速度低可能意味着

  • 你没有索引,引擎必须做全扫描,所以最好在你有像'='这样的操作的字段上添加索引。如果您使用 = 或 <>,则索引的类型可能是“哈希”,而 btree 用于 < 或 > 等操作

  • 右表中的行数比左表中的 1 多 10 倍或更多,因此索引无济于事,您需要考虑对数据进行分区

于 2012-08-31T16:02:50.040 回答