2016-08-04 122 views
-1

什麼是最快速的方式來檢查是否存在一個記錄,這將適用於oracle,mysql和postgres。最快的「GENERIC」方法來檢查db中是否存在記錄?

按照以下鏈接:Fastest way to determine if record exists,我們可以使用top子句,但top在oracle中不可用。我不想針對不同的dbs有不同的查詢。

因此,什麼是最好的通用查詢來檢查db是否存在記錄?

+0

我不確定是否有一個完全通用的方式[除此之外](http://stackoverflow.com/q/9026184/266304)。 Oracle有'存在',你必須從雙選擇,這是不通用的。雖然...... –

回答

0

可能沒有快速通用的方法,因爲SQL方言太不同了。一,將始終工作

SELECT min(field) FROM mytable WHERE field = ?; 

如果數據庫是很聰明的(未測試如果有的話),它可能會弄清楚,它可以找到的第一個記錄之後停止;但如果不是count(*)可能會更快。

另一個想法是在你的編程語言中使用遊標,並只取1行。智能數據庫(比如PostgreSQL)會發現他們應該選擇一個快速獲得前幾行的計劃。

0

在PostgreSQL:使用limit

select exists (select 1 from t where column = value); 

通用:

select 1 
from t 
where column = value 
limit 1 

使用select 1(或常數),而不是select *將使如果數據庫有能力的指標只搜索。

+0

「限制」不是通用的 - 但Oracle不支持這一點(即使在12c中,語法也不同)。 –

相關問題