Pregunta

Siempre pensé que un compilador de SQL se rompería, pero aparentemente el anidamiento puede ser casi infinito. ¿Se desecha este código de inmediato o hay un rayo de esperanza de que algo como esto pueda funcionar?

Esta consulta realmente no me pertenece, así que no puedo publicarla ... Sin embargo, supongamos que es este :

[SELECT /*+ NOPARALLEL bypass_recursive_check */ 
SP_ALIAS_190, 
((CASE SP_ALIAS_191
WHEN 1
THEN 'PROVIDER::ALL_PROV::'
WHEN 0]
¿Fue útil?

Solución

Si la consulta es generada por una herramienta (o por código), entonces puede ser relativamente simple de mantener (en el sentido de que el código de generación de consultas puede estar bien escrito y ser mantenible)

Otros consejos

Claramente, nunca has visto el SQL que sale del Sharepoint DAL.

Me encontré con un problema similar a este recientemente y tomé una decisión al considerar un par de cosas:

  • ¿Cuánto tiempo llevará esto para mantener vs. reescribir?
  • ¿Qué tan crítico es esto? Puede haber mucha lógica que puede ser difícil de descifrar y el valor en el hecho de que & Quot; funciona & Quot; excede el valor de una reescritura inmediata.

Y, por supuesto, estaba la decisión política que debía tomar la gerencia con respecto al riesgo de explicar por qué algo que se había creado recientemente tendría que reescribirse.

Al final (para mí), buscar + reemplazar fue mi amigo.

Refactorizar usando CON declaración. Agregue montones y montones y montones de comentarios.

Si lo divide en pedazos que se pueden manejar, tiene muchas más posibilidades.

Si contiene una gran cantidad de anidamiento, diría que no.

Al igual que cualquier código, sin importar el idioma, solo debe considerar reescribirlo porque puede hacerlo más eficiente o más fácil de entender.

Basado en mi experiencia, he podido reducir SQL mal escrito 4 a 5 veces su tamaño y muchas veces su rendimiento porque el creador original realmente no tenía idea.

Si cree que es malo, debería ver el video de muestra de Industrial Logic sobre olores de código: Deuda técnica . Definitivamente no autogenerado.

¿Es posible mantener una función de 43 páginas, por ejemplo, en C #? La respuesta es obvia;). Simplemente no puedo imaginar esto. Si yo fuera tú, lo dividiría en partes más pequeñas.

Dos cosas:

  • ¿Solo las máquinas necesitarán leer este SQL?
  • ¿Estás atrapado con el esquema subyacente?

Si tiene una consulta de 43 páginas y respondió que sí a las dos primeras preguntas, bienvenido al desarrollo de SharePoint

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top