Oracle級聯查詢
阿新 • • 發佈:2019-02-11
增刪改查是最基本的業務,也是變化和要求最多的業務,那麼原始需求如下:
- 假如一個A對應N個B,一個B對應N個C,一個C對應N個D
資料量為 幾百 幾千 幾萬 百萬
有什麼比較好的方法把這個表格查出來嗎?
一拍腦袋,我就想出兩個辦法:
- 先查10個A,迴圈查對應的B…(非常慢,滿足了分頁需求)
- 把四張表left join到一起,然後查20條資料出來(速度較快,但是沒有滿足分頁需求,而且查出來的資料一對多的關係被隱藏在重複的A、B、C之間了,需要做去重處理)
- 先查10個A,然後在四張表的join中寫一個子查詢 “and id in ( select id from A where… )”,相當於先查10個A然後再根據這10個A查詢四張表的對應資料,只不過子查詢稍微快點(優點是彌補了方法2中分頁的缺點,但是方法2的其他缺點沒有改善
暫時就想到上面這些,不知道有沒有更好的辦法,歡迎留言~
需求總是無盡的,那麼新的需求1如下:
- 若表D中存在一個時間欄位,現在要求在表格中不需要所有的D資料,只要時間最大\新的D資料
該如何生成新的表格?
簡單的辦法不用怎麼想,儘管不是很好用,如下:
- 根據原始需求的方法3做改進,讓他按照時間排序,然後我在使用的時候,每當遇到需要處理D的情況,只取最上面一條 (自然,這很不優雅)