我有一張巨大的桌子可以使用。我想檢查是否有一些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