作者fantasyj (如梦似幻)
看板Database
标题Re: 请问这样查询效率会差很多吗?
时间Fri Nov 12 08:29:44 2010
※ 引述《drkkimo (花猫~ 努力研究 )》之铭言:
: 如果今天有一个select 查询 其中有A、B、C三个table 作join
: join的条件 只是三table的键值参照对应 再加上各自栏位的一些条件筛选
: 这样的情形 如果先把A和B join的结果 放到一个oracle的temporary table D中
: 再作C和D的join ,总共的查询时间 会比直接下查询快很多吗???
: //=============================
: 因为今天有人和我说这样会快很多 但感觉起来好像只有再次查询时 可以省掉对
: A、B join的时间
: 请问有人平常有用这种作法 或听说过这样会比较有效率的吗?? 谢谢
在个人的经验中, 如果是在一个session中大量处理不同的需求,
但是其中有某部份(例如a.b.c这三个table join的资料都是必要的),
而且每次不同的时间,资料都会因而变动,那用temp table会比较方便
但如果是report也要用,form也要用,总而言之是很多不同的session的需求,
而之前的资料又不会变动, 那处理成实体table才是比较好的方式..
再额外一提,确实有时候会因为原table设计错误(例如a table unique index
的data type为number, 而b table 放同样的东西, 但是却放在 varchar上),
但因为关系甚大,无法去更动b table,这时候也不会去使用temp table, 而是
会改用Materialized View来随时做更新(On Commit Refresh)的处理
纯属个人经验...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.117.121.181