大表,多表关联使用临时表哪种效率高?
有三四张大表关联,关联条件有些复杂。
以下四种方式,哪种方式效率更高些,更好些,最好从原理上讲解下。
1、直接关联。
2、with as 临时表方式,
3、把这三张表分别按各自条件过滤掉生成实表。create tble as 方式,然后三张较小的表关联。
4、存储过程中使用回话级临时表global temporary table这种方式。
这个是我个人理解,以前处理过大数据量的关联,直接关联大概要跑几个小时,但是分割成临时表方式,10多分钟就跑完了。
with as 这种是写到内存中的表,按道理比直接读数据块要更直接些,是不是要快些。
还有一种理解,with as 相当于子查询。子查询跟直接关联效率区别不大,甚至还不如直接关联。
请各位给出些解释,从原理上的。谢谢!