2016-08-04 65 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中,语法也不同)。 –

相关问题