我有一张巨大的桌子可以使用。我想检查是否有一些parent_id等于我的传递值的记录。 目前我实现这个是通过使用“select count(*)from mytable where parent_id =:id”;如果结果> 0,意味着它们确实存在。因为这是一个非常大的表格,我不在乎什么是存在的记录的确切数量,我只是想知道它是否存在,所以我认为count(*)有点低效。检查数据库表中的某些记录的最快方法是什么?
如何以最快的方式实现此要求?我使用的是Oracle 10
#根据冬眠提示&技巧https://www.hibernate.org/118.html#A2
这表明,以这样写:
整型数=(整数)session.createQuery(“SELECT COUNT(* )from ....“)。uniqueResult();
我不知道uniqueResult()在这里有什么魔力?为什么它使这个速度更快?
比较“选择1从mytable where parent_id = passingId和rowrum < 2”,这样更有效率吗?
您甚至不需要查询DUAL - 从mytable中选择'Y',其中parent_id =:id AND ROWNUM = 1'给出相同的结果。 – 2010-01-26 08:47:16
是的 - 只是不喜欢“ROWNUM = 1” - 并不像EXISTS查询那样透明。尽管如此。 – 2010-01-26 11:54:04