Saltar al contenido

Medición de la complejidad de las sentencias SQL

Deseamos mostrarte la mejor solución que encontramos en todo internet. Nuestro deseo es que te sea útil y si deseas comentarnos algún detalle que nos pueda ayudar a mejorar hazlo con total libertad.

Las medidas comunes de la complejidad del software incluyen la complejidad ciclomática (una medida de cuán complicado es el flujo de control) y la complejidad de Halstead (una medida de la complejidad de la aritmética).

El “flujo de control” en una consulta SQL se relaciona mejor con los operadores “y” y “o” en la consulta.

La “complejidad computacional” se relaciona mejor con operadores como SUM o JOINS implícitos.

Una vez que haya decidido cómo categorizar cada unidad de sintaxis de una consulta SQL en cuanto a si se trata de “flujo de control” o “cálculo”, puede calcular directamente medidas ciclomáticas o de Halstead.

Qué hace el optimizador de SQL con las consultas I pensar es absolutamente irrelevante. El propósito de las medidas de complejidad es caracterizar qué tan difícil es para una persona entender la consulta, no qué tan eficientemente puede evaluarse.

Del mismo modo, lo que dice el DDL o si las vistas están involucradas o no no deben incluirse en tales medidas de complejidad. La suposición detrás de estas métricas es que la complejidad de la maquinaria dentro de una abstracción usada no es interesante cuando simplemente la invocas, porque presumiblemente esa abstracción hace algo bien entendido por el codificador. Esta es la razón por la cual las medidas Halstead y Cyclomatic no incluyen subrutinas llamadas en su conteo, y creo que puede argumentar que las vistas y la información DDL son esas abstracciones “invocadas”.

Finalmente, qué tan bien o qué tan perfectamente equivocados sean estos números de complejidad no importa mucho, siempre que reflejen algo de verdad sobre la complejidad y pueda compararlos entre sí. De esa manera, puede elegir qué fragmentos de SQL son los más complejos, clasificarlos todos y centrar su atención de prueba en los más complicados.

No estoy seguro de que la recuperación de los planes de consulta responda la pregunta: los planes de consulta ocultan una parte de la complejidad del cálculo realizado en los datos antes de que se devuelvan (o se usen en un filtro); los planes de consulta requieren una base de datos significativa para ser relevantes. De hecho, la complejidad y la duración de la ejecución son algo opuestas; algo así como “Bueno, Rápido, Barato – Elige dos”.

En última instancia, se trata de las posibilidades de cometer un error o de no entender el código que he escrito.

Algo como:

  • número de mesas veces (1
  • +1 por expresión de combinación (+1 por combinación externa?)
  • +1 por predicado después WHERE o HAVING
  • +1 por GROUP BY expresión
  • +1 por UNION o INTERSECT
  • +1 por llamada de función
  • +1 por CASE expresión
  • )

Siéntase libre de probar mi secuencia de comandos que brinda una descripción general del tamaño del procedimiento almacenado, la cantidad de dependencias de objetos y la cantidad de parámetros:

Calcular la complejidad del procedimiento almacenado TSQL

Tienes la opción de añadir valor a nuestra información colaborando tu veteranía en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *