Enn*_*oji 1 sql oracle hibernate
所以我有这个SQL查询,
<named-query name="NQ::job_exists">
<query>
select 0 from dual where exists (select * from job_queue);
</query>
</named-query>
Run Code Online (Sandbox Code Playgroud)
我计划使用这样的:
Query q = em.createNamedQuery("NQ::job_exists");
List<Integer> results = q.getResultList();
boolean exists = !results.isEmpty();
return exists;
Run Code Online (Sandbox Code Playgroud)
然而,我在SQL/JPA中并不是很强大,并且想知道是否有更好的方法(或者改进方法).我应该,例如,写(从job_queue jq选择jq.id)而不是使用明星?
编辑:此调用在我们的应用程序中非常重要.
编辑:做了一些性能测试,虽然差异几乎可以忽略不计,但我最终决定采用:
select distinct null
from dual
where exists (
select null from job_queue
);
Run Code Online (Sandbox Code Playgroud)
如果您使用的是EXISTSOracle,我建议使用null:
select null
from dual where exists (select null from job_queue);
Run Code Online (Sandbox Code Playgroud)
以下将是Oracle上成本较低的一个:
select null
from job_queue
where rownum = 1;
Run Code Online (Sandbox Code Playgroud)
更新:要包括表上没有行的情况,您可以运行以下查询:
select count(*)
from (select null
from job_queue
where rownum = 1);
Run Code Online (Sandbox Code Playgroud)
使用此查询,您可以获得最佳计划,并且只有两种可能的结果:1如果有行且0没有行.
| 归档时间: |
|
| 查看次数: |
1581 次 |
| 最近记录: |