(使用Oracle)我有一個包含一列(myCol)的表,它是主鍵。PLSQL - 在插入之前檢查dups的最快方法
在執行插入操作時,在執行插入操作之前檢查select語句還是隻寫入插入操作並讓錯誤處理檢查它會更快?
這樣會更快嗎?
BEGIN
SELECT count(*) INTO v_count FROM myTbl WHERE myCol = v_newVal;
IF v_count = 0 THEN
INSERT INTO myTbl (myCol) VALUES (v_newVal);
END IF;
END;
or this?
BEGIN
INSERT INTO myTbl (myCol) VALUES (v_newVal);
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
null;
END;
謝謝!
你發佈的鏈接表明使用count是最好的方法... – mang
我不同意這一部分,但它的目的是顯示查詢提示的方法,這是所有...當表得到大數可以變得昂貴。除非你的桌子很大,否則計數路線是最簡單的。 – markg
計數可能很昂貴,並且可能會破壞其他未來選擇的緩存,因爲大量記錄將被解析和讀取。 如果你有一個實際的性能問題,只需要count()就可以使它更復雜。 最後,即使你做count(),你仍然需要異常處理,因爲並行性 – odedsh