我必须对Oracle数据库进行查询,以验证是否至少有一条记录与我的查询匹配。
表中有6个连接,主表有大约4千万个记录。
我尝试了两种方法来进行选择:
select 1 from Table t ...
join X on x.id = T.id join Y on y.id = x.id ....
where x.field = ? and y.field = ? and t.field = ?
and rownum = 1
和
select count (*) from Table t ...
join X on x.id = T.id join Y on y.id = x.id ....
where
x.field = ? and y.field = ? and t.field = ?
and rownum = 1
我根本没有Databses查询的经验,在初步测试中我在第一种情况下得到更好的查询次数,但是当没有记录时,第一次查询似乎非常慢。但我不知道即使我正在做正确的基准测试。
所以我问,这种类型的查询最好的方法是什么?
答案 0 :(得分:0)
您使用的是t-sql而不是pl / sql。你的第二个查询应该是这样形成的:
select count (*)
from Table t, X, Y
where x.id = T.id and
y.id = x.id and
x.field = ? and
y.field = ? and
t.field = ?
...而且你真的不需要rownum = 1,只是一个计数。
答案 1 :(得分:0)
我认为执行查询的两种方式没有区别。