参考原始文档后, 自已总结一下, 有不对的地方请指正. 在数据库中对数据的访问总存在不同的方法, 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来指定一个表的访问方法, 到止前为止, 还是人脑比较聪明.