sql >> Base de Datos >  >> RDS >> Oracle

¿Usar select * para un cursor en PL/SQL se considera mala programación?

Usando select * en su código es lo que yo llamaría programación perezosa, con varios efectos secundarios desagradables. Cuánto experimente esos efectos secundarios diferirá, pero nunca es positivo.

Usaré algunos de los puntos ya mencionados en otras respuestas, pero siéntete libre de editar mi respuesta y agregar más puntos negativos sobre el uso de select * .

  1. Está enviando más datos del motor SQL a su código de los necesarios, lo que tiene un efecto negativo en el rendimiento.

  2. La información que obtiene debe colocarse en variables (una variable de registro, por ejemplo). Esto requerirá más memoria PGA de la necesaria.

  3. Usando select * nunca usará un índice solo para recuperar la información deseada, siempre tendrá que visitar la tabla también (siempre que no exista un índice que contenga todas las columnas de la tabla). De nuevo, con un efecto negativo en el rendimiento.

  4. Menos claro para las personas que mantienen su código cuál es su intención. Necesitan profundizar en el código para detectar todas las ocurrencias de su variable de registro para saber qué se está recuperando.

  5. No utilizará funciones de SQL para realizar cálculos, sino que siempre se basará en cálculos de PL/SQL o Java. Es posible que se esté perdiendo algunas grandes mejoras de SQL, como funciones analíticas, cláusula de modelo, factorización de subconsultas recursivas y similares.

  6. Desde Oracle11 en adelante, las dependencias se rastrean a nivel de columna, lo que significa que cuando usa select * , su código se marca en el diccionario de datos como "dependiente de todas las columnas" de esa tabla. Su procedimiento se invalidará cuando algo le suceda a una de esas columnas. Por lo tanto, usar select * significa que su código se invalidará más a menudo de lo necesario.

Nuevamente, siéntase libre de agregar sus propios puntos.