mysql 同一版本,同样的库,同样的参数设置,却不同的优化策略是为什么?

如题:mysql 同一版本,同样的库,同样的参数设置,却不同的优化策略是为什么?
同一句sql,在247的服务器上,正常的解析,使用正常索引,小表驱动大表,
在181的服务器上,不能正常的解析,没使用索引,大表驱动小表。

[quote]关键的是他有时候是按照大表驱动小表的解析方式,有时候是按照小表驱动大表的解析方式,来解析[/quote]
这个应该是优化器的问题吧,估计是大表驱动小表和小表驱动大表效率差不多。。。。
至于没使用索引的话,可能是因为优化器认为全表扫描效率比索引高,所以就不用索引。
当然你可以强制使用索引的 user index ( xxxxxx)

在181的服务器上 是不是 索引失效了, 重新建下索引

[quote]不能正常的解析[/quote]
这是什么意思?

[quote]

谢谢你的思路,索引重建过。
[/quote]

还是不行吗?

把SQL语句贴出来,索引也弄出来,看看

Sql语句中是不是有用到 exists 或者in

SQL语句可以稍微调整下:
[code="java"]select p.id, p.name, p.custom_id, p.des
from project p
where exists(select 1 from custom_sum_account a, custom b where a.custom_id = b.id and p.name=b.name) [/code]

或者
[code="java"]
select p.id, p.name, p.custom_id, p.des
from project p
where p.name in (select distinct(a.project) from custom_sum_account a, custom b where a.custom_id = b.id )
[/code]

通常情况是 外大内小用exist,外小内大用in
SQL语句可以稍微调整下

[code="java"]但是在181上面,通过explain 发现他根本不用索引custom_id ,而是直接做全表匹配。
而且并不是每时刻181上面都是这么处理,经过多此对181上面的mysql重启,它会恢复到通过索引custom_id 来查询。 [/code]

这个需要对Mysql的一些参数做优化,

也是同一个SQL语句?