最快的“GENERIC”方式来检查db中是否存在记录?

时间:2016-08-04 08:34:14

标签: mysql database oracle postgresql

检查db中是否存在适用于oracle,mysql和postgres的记录的最快方法是什么。

根据以下链接:Fastest way to determine if record exists,我们可以使用top子句,但oracle中没有top。我不想对不同的dbs有不同的查询。

因此,检查db中是否存在记录的最佳通用查询是什么?

2 个答案:

答案 0 :(得分:0)

可能没有快速的通用方法,因为SQL方言太不同了。一个永远有效的是

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

如果数据库非常智能(未经过测试),它可能会发现它可以在找到第一条记录后停止;但如果不是count(*)可能会更快。

另一个想法是在编程语言中使用游标,只获取1行。智能数据库(如PostgreSQL)将会发现他们应该选择一个能够快速获得前几行的计划。

答案 1 :(得分:0)

在Postgresql中:

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

使用limit进行通用:

select 1 
from t 
where column = value
limit 1

如果数据库具有该功能,则使用select 1(或任何常量)代替select *将允许索引仅搜索。