建议7.5:在返回的结果集大于1万行时,不建议使用嵌套循环连接,应考虑使用哈希连接或排序合并连接进行替换。
&说明
返回大量结果集时嵌套循环连接的成本较高、效率很低,此时应考虑变换连接方式,特别在使用RBO优化器时,嵌套循环连接的优先级较高,通常需要用“提示”来强制改变连接方式。
建议7.6:两个无序大表的连接,在连接字段无索引时,不建议使用合并排序连接。
&说明
排序合并连接需要先对两个表按连接字段进行排序,如果两个表都非常大,其排序的操作的代价会非常巨大。
建议7.7:含有多表的SQL语句,必须明确指定各表的连接条件,以避免产生迪卡尔积。
--明确所有表的连接条件
select a.column2, b.column2, c.column2
from t_tablename1 a, t_tablename2 b, t_tablename3 c
where a.column1 = b.column1
and b.column1 = c.column1
and c.column1 <> value;