Estoy usando Oracle, y tengo una tabla muy grande. Necesito verificar si existe alguna fila que cumpla con algunos criterios simples. ¿Cuál es la mejor manera de hacerlo usando SQL simple?¿La consulta más rápida para verificar la existencia de una fila en Oracle?
Aquí es mi mejor conjetura, y si bien puede llegar a ser lo suficientemente rápido para mis propósitos, me gustaría aprender una forma canónica que ver básicamente servidor de SQL "existe" en Oracle:
select count(x_id) from x where x.col_a = value_a and x.col_b = value_b;
El conteo() se devolverá como un booleano en otro nivel. El punto principal es que quiero que Oracle haga el mínimo indispensable para esta consulta: solo necesito saber si hay filas que coincidan con los criterios.
Y sí, esas columnas definitivamente serán indexadas.
@Tony. ¿Haría un recuento (*) en lugar de EXISTS? Para mí, un EXISTE parece más natural, incluso si necesita lidiar con la excepción. –
¿Quiere decir "seleccionar 1 de dual donde existe (...)"? No lo haría, pero puedo entender por qué algunos lo harían. Lo que realmente se quiere que sea totalmente natural es una construcción PL/SQL como "SI existe (seleccione ...) ENTONCES ..."! –
Estoy siendo flojo aquí al no probarlo yo mismo, pero no contaría (x_id) sería más rápido que count (*), o es el intérprete sql lo suficientemente inteligente como para ver que realmente no necesita expandir "*" ? –