什麼是最快速的方式來檢查是否存在一個記錄,這將適用於oracle,mysql和postgres。最快的「GENERIC」方法來檢查db中是否存在記錄?
按照以下鏈接:Fastest way to determine if record exists,我們可以使用top
子句,但top在oracle中不可用。我不想針對不同的dbs有不同的查詢。
因此,什麼是最好的通用查詢來檢查db是否存在記錄?
什麼是最快速的方式來檢查是否存在一個記錄,這將適用於oracle,mysql和postgres。最快的「GENERIC」方法來檢查db中是否存在記錄?
按照以下鏈接:Fastest way to determine if record exists,我們可以使用top
子句,但top在oracle中不可用。我不想針對不同的dbs有不同的查詢。
因此,什麼是最好的通用查詢來檢查db是否存在記錄?
可能沒有快速通用的方法,因爲SQL方言太不同了。一,將始終工作
SELECT min(field) FROM mytable WHERE field = ?;
如果數據庫是很聰明的(未測試如果有的話),它可能會弄清楚,它可以找到的第一個記錄之後停止;但如果不是count(*)
可能會更快。
另一個想法是在你的編程語言中使用遊標,並只取1行。智能數據庫(比如PostgreSQL)會發現他們應該選擇一個快速獲得前幾行的計劃。
在PostgreSQL:使用limit
select exists (select 1 from t where column = value);
通用:
select 1
from t
where column = value
limit 1
使用select 1
(或常數),而不是select *
將使如果數據庫有能力的指標只搜索。
「限制」不是通用的 - 但Oracle不支持這一點(即使在12c中,語法也不同)。 –
我不確定是否有一個完全通用的方式[除此之外](http://stackoverflow.com/q/9026184/266304)。 Oracle有'存在',你必須從雙選擇,這是不通用的。雖然...... –