2011-02-01 75 views
3

我运行一个简单的左相对较小的表(〜5000行)之间的连接查询:的MySQL力指数不起作用

select * 
from table1 
left join table2 
force index (index_table2_on_name) for join 
on table1.name = table2.name 

index_table2_on_name存在,然而MySQL拒绝使用它。在查询上运行解释会返回:select_type = SIMPLE,为两个表键入= ALL和possible_keys = NULL。

有什么想法?

+1

强制使用索引通常是一个糟糕的主意......更多的时候它会回来咬你... – 2011-02-01 07:53:09

回答

6

发现问题。 看起来table1.name和table2.name具有不同的字符集定义。 Mysql忽略索引而不是使用转换,这很奇怪。

+0

不是真的 - 它用不同的类型做同样的事情 – symcbean 2011-02-01 12:44:13