我想檢查我的表中是否存在記錄。我發現最有效的方法是使用DUAL表格。但是,我不能100%確定這種方法的工作原理。我有一張包含數千條記錄(差不多50萬)的表格。有這兩種方法之間的主要區別,牢記了很多紀錄都存在於表:檢查表中是否存在記錄
方法1:
SELECT 1
FROM DUAL
WHERE EXISTS(SELECT *
FROM MY_TABLE
WHERE MY_COLUMN_PK = 'MY_VALUE'
AND MY_COLUMN = 'MY_VALUE')
方法2:
SELECT 1
FROM DUAL
WHERE EXISTS(SELECT *
FROM MY_TABLE
WHERE MY_COLUMN_PK = 'MY_VALUE'
AND MY_COLUMN = 'MY_VALUE'
AND ROWNUM=1)
我已經在我的數據庫客戶端軟件中執行了兩個查詢,並且這兩個查詢的執行時間都差不多。
說明:MY_COLUMN_PK
是我的表的主鍵,而MY_COLUMN
不是主鍵,也沒有索引。
「方法2」更有效。 –
我們不能不知道你有哪些主要和唯一的密鑰。 –
@HardikVinzava方法1選擇表中的所有記錄,而方法2僅選擇第一條記錄。我知道方法2更有效,但我爲什麼獲得相同的執行時間? – user1135357