什么是最快速的方式来检查是否存在一个记录,这将适用于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有'存在',你必须从双选择,这是不通用的。虽然...... –