检查db中是否存在适用于oracle,mysql和postgres的记录的最快方法是什么。
根据以下链接:Fastest way to determine if record exists,我们可以使用top
子句,但oracle中没有top。我不想对不同的dbs有不同的查询。
因此,检查db中是否存在记录的最佳通用查询是什么?
答案 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 *
将允许索引仅搜索。