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