Ho un tavolo enorme con cui lavorare. Voglio verificare se ci sono alcuni record il cui parent_id è uguale al mio valore di passaggio. attualmente quello che implemento è usando "select count (*) da mytable dove parent_id =: id"; se il risultato> 0, significa che esistono.Il modo più veloce per verificare se alcuni record in una tabella di database?
Poiché si tratta di una tabella molto grande, e non mi interessa quale sia esattamente il numero di record esistenti, voglio solo sapere se esiste, quindi penso che count (*) sia un po 'inefficiente.
Come implementare questo requisito nel modo più rapido? Sto usando Oracle 10.
#Secondo letargo Consigli & Tricks https://www.hibernate.org/118.html#A2
Si suggerisce di scrivere in questo modo:
Integer count = (Integer) session.createQuery ("select count (*) da .... "). uniqueResult();
Non so qual è la magia di uniqueResult() qui? perché lo rende veloce?
Confronta "seleziona 1 da mytable dove parent_id = passingId e rowrum < 2", che è più efficiente?
Non hai nemmeno bisogno di interrogare DUAL - 'seleziona 'Y' da mytable dove parent_id =: id AND ROWNUM = 1' dà risultati identici. –
Sì, semplicemente non mi piace "ROWNUM = 1" - non si sente trasparente come una query EXISTS. Solo io però. –