Re: 請問這樣查詢效率會差很多嗎?

看板Database作者 (如夢似幻)時間15年前 (2010/11/12 08:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《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
文章代碼(AID): #1Ct8fxea (Database)
文章代碼(AID): #1Ct8fxea (Database)