参考原始文档后, 自已总结一下, 有不对的地方请指正. 在数据库中对数据的访问总存在不同的方法, MySQL中比较常的有以下几种, 在这儿按从好到坏的顺序排列. 在Oracle的Concept文档中, Oracle RBO有十六种不同的访问方法, MySQL中主要有以8种:

1, 访问系统固定(Constant)表 -- system.
2, 访问用户的固定表 -- const.
3, 在主键或维一性索引上用等于查找 -- eq_ref.
4, 在非空列的索引上用等于查找 -- ref.
5, 在允许空值的索引上用等于查找 -- ref_or_null.
6, 在索引上按范转查找 -- range.
7, 扫描整个索引 -- index.
8, 扫描整全表 -- all.

    MySQL总按这个顺序来选择最佳的访问方法, 在多个表进行关联(Join)时, MySQL基本上会选择从具有最佳访问路径的表开始, 按这个顺序进行排列来确定关联顺序.

    这样的访问方法在大都数情况下都是合理的, 如果MySQL能象Oracle一样搞个统计值(CBO), 就会更好了. 另外我还不知道MySQL可不可以用Hint来指定一个表的访问方法, 到止前为止, 还是人脑比较聪明.