2010-03-24 12 views
14

¿Existen técnicas formales para refactorizar SQL similares a esta lista here que es para el código?Refactoring SQL

Actualmente estoy trabajando en una consulta masiva para un informe en particular y estoy seguro de que hay mucho margen para la refactorización aquí, que estoy tropezando poco a poco.

+0

No es que sea muy consciente, pero sigo teniendo sentido para mirar este libro http://www.amazon.co.uk/gp/product/0321293533 –

+0

Ese libro se ve interesante, aunque me da la sensación es más acerca de la refacturación del diseño de la base de datos en lugar de las consultas en contra de un diseño existente. Podría estar equivocado, aunque. –

Respuesta

1

No es lo que he encontrado. Yo he hecho sobre todo el trabajo de SQL Server y las técnicas estándar son:

  • parametrizar los valores no modificables que podrían cambiar (por lo que la consulta puede ser en caché)
  • revisión del plan de ejecución, comprobar donde los grandes monstruos son y probarlos cambiar
  • asistente de optimización de índices (pero ten cuidado no causar caos en otro lugar de cualquier cambio que realice para este)

Si todavía está atascado, muchos informes no dependen 100% datos en vivo: intente calcular previamente porciones de los datos (o todo el lote) en un calendario suc h como la noche.

+4

Parece que está hablando de optimizar (mejorar el rendimiento) en lugar de refactorizar (mejorar el diseño). – gkrogers

5

Nunca he visto una lista exhaustiva como la muestra que proporcionó.

La forma más efectiva de refactorizar sql que he visto es usar el with statement. Le permite dividir el sql en partes manejables, que con frecuencia se pueden probar de forma independiente. Además, puede permitir la reutilización de los resultados de la consulta, a veces mediante el uso de una tabla temporal del sistema. Vale la pena el esfuerzo de examinar.

Here es un ejemplo más entretenido.

+2

Bueno, si están en SQL 2005+. Pre entonces no se puede usar con las declaraciones, por lo que las tablas temporales son su amigo. (Tenga en cuenta que para las pruebas, puede ser mejor comenzar con la temperatura y convertir a las que desee cuando esté satisfecho con ellas, de modo que pueda dejar las tablas almacenadas en memoria y esperar en lugar de tener que reconstruirlas por separado vez que desea verificar algo.) – eftpotrm

+0

También puede usar vistas y funciones en línea con valores de tabla en lugar de CTE. – Sam

2

Hay un libro sobre el tema: "Refactoring Databases". No lo he leído, pero tiene 4.5/5 estrellas en Amazon y es co-escrito por Scott Ambler, que son buenas señales.

Cuestiones relacionadas