改寫一個要跑5小時的SQL成1分鐘
INSERT INTO temp_existing_links
(item_id,
link_id,
link_priority,
item_identifier)
SELECT /*+ INDEX (i IX_ITEM_6) */ i.item_id,
NULL,
NULL,
i.item_identifier
FROM item i
WHERE i.account_code = p_account_code
AND i.account_type_code = p_account_type_code
AND i.latest_ind ='Y'
AND NOT EXISTS (SELECT 1 from link, item_link WHERE link.link_id = item_link.link_id AND valid_link_ind = 'Y' AND item_id = i.item_id);
改成以下寫法:
union all 裡的第一個select用左連線表示找出沒有在item_link裡出現的item(左連線,左邊都會出現item_id,即使右邊il.item_id是null,即沒有對應的. ), 第二個表示找出link了,但valid_link_ind<>'Y' 的item. 這兩個條件就滿足了上面的判斷NOT EXISTS.
INSERT INTO temp_existing_links
(item_id,
link_id,
link_priority,
item_identifier)
(
SELECT /*+ INDEX (i IX_ITEM_6) */ i.item_id,
NULL,
NULL,
i.item_identifier
FROM item i,item_link il
WHERE i.account_code = 'CRES_20000'
AND i.account_type_code = 'TRADE'
AND i.latest_ind ='Y'
and i.item_id = il.item_id(+)
and il.item_id is null
union all
SELECT /*+ INDEX (i IX_ITEM_6) */ i.item_id,
NULL,
NULL,
i.item_identifier
FROM item i,item_link il,link l
WHERE i.account_code = 'CRES_20000'
AND i.account_type_code = 'TRADE'
AND i.latest_ind ='Y'
and i.item_id = il.item_id
and il.link_id = l.link_id
and l.valid_link_ind <> 'Y'
);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14377/viewspace-970692/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [譯] 正規表示式要跑 5 天,所以我做了個工具,只跑 15 分鐘。
- 一條SQL的改寫SQL
- 把一個python程式改寫成JuliaPython
- 要養成良好的書寫SQL的習慣SQL
- 面試官讓我5分鐘內寫一個搶紅包程式,我和他說了半小時原理!面試
- 仿寫一個簡單的微信小程式(番茄鬧鐘)微信小程式
- 用js寫的一個跑馬燈JS
- sql改寫SQL
- 寫的一個SQLSQL
- 一種提升SQL改寫效率的方法SQL
- 使用sql*plus時的一個安全小問題SQL
- 寫 CSS 時要避免的幾個地方CSS
- 如何使用原生技術寫一個倒數計時時鐘
- 解決: 執行計劃變了,一條語句要跑20小時候.
- (大表小技巧)有時候 2 小時的 SQL 操作,可能只要 1 分鐘SQL
- 如何跑通第一個 SQL 作業SQL
- 20行程式碼寫一個簡單 Blazor 時鐘元件行程Blazor元件
- 如何把一個吃灰的 Kindle 設定成一個墨水螢幕的時鐘 All In One
- 氣泡排序的改進:一次同時冒一個大泡,一個小泡排序
- 5個平時容易讓人忽略的Excel技巧,10分鐘幫你搞定2小時的工作Excel
- 一個本人分析Jive1_2時寫的小程式
- MySQL的SQL等價改寫MySql
- 改寫不走索引的SQL索引SQL
- 建立一個成功的App前要考慮的5個要點APP
- 5個不起眼的Excel小技巧,只需3分鐘幫你完成以往2小時的工作量!Excel
- SQL改寫優化SQL優化
- Python GUI 教程 25行程式碼寫一個小鬧鐘PythonGUI行程
- 寫一個小框架框架
- 3.三分鐘跑啟你的第一個Flutter AppFlutterAPP
- 我寫的一個小程式,改變分割槽序列號。編譯成COM檔案執行。 (2千字)編譯
- 用 Java 拿下 HTML 分分鐘寫個小爬蟲JavaHTML爬蟲
- CSS 繪製一個時鐘CSS
- javascript顯示一個時鐘JavaScript
- 改進c#程式碼的5個常用的小技巧C#
- 5分鐘實現一個Koa
- Oracle case when改寫SQLOracleSQL
- DB2 SQL改寫DB2SQL
- 一個Python小白5個小時爬蟲經歷 【續】Python爬蟲