El compañero de Jeroen tuvo la mala suerte de ser asignado a depurar un error intermitente sin especificar en una de las más antiguas de las aplicaciones heredadas. "La buena noticia es que lo he aislado a una consulta de base de datos", dijo Jeroen, "la mala noticia es que lo he aislado a una consulta de base de datos." Sabiendo que su colega no era un gran fan de bases de datos, Jeroen ofreció su ayuda. En respuesta, recibió la siguiente imagen. "Yo no creo que nadie me puede ayudar", escribió el amigo.
|
etiquetas: consulta , sql , desesperación , imposible , jeroen , bbdd , base de datos
una consulta que requiere de más de 7 tablas suele sugerir un grave error de diseño del ERD
No para que se maten a solucionarlo, si no por que muchas cabezas piensan más que una sola, y te darán miles de soluciones
Del "Manual de Satanás para la mejora del rendimiento de las calderas infernales"
Que hijos de su madre ni lo indentan.
Haciendo un trim, son 9 páginas de Word a tamaño de fuente 9.
Este tío es un principiante!
Coñas aparte, es una SQL con 5 UNION ALL con multiples condiciones cada una. Es muy tocha pero no es realmente complicada. He visto sentencias de 50 líneas con muchísima más complicación. Pero es bad practice, claramente
#15 "Codigo en C"
cache.ohinternet.com/images/2/24/I_see_what_you_did_there_super.jpg
-¿Cuál?
Nunca volveré a decir que mi consulta es jodida.
#37 Psssst, si se te oliva un paréntesis el error no es intermitente. De nada, también.
Una vez tuve que enfrentarme a un select de más o menos 200 campos y tardé casi una semana en descifrarlo. La solucíon pasó por hacer un análisis estadístico a ojo de buen cubero y separar las peticiones a cada tabla en un join, para luego encadenarlos por bloques. Meses más tarde decidimos empezar de cero una aplicación sin el famoso "botón-enviar-que-hace-gran-consulta"
#38 S
=)
Cualquier consulta grande va en contra de todos los principios que haya en el diseño de software, incluso de los que se pueden romper como excepción a la norma.
#48 Nadie se escandaliza de una afirmación como esa y después van y se escandalizan del alto número de informáticos a los que les gusta el bestialismo
A parte de 6 hojas llenas de texto?
Gracias
Humanizando código desde el año 2000.
Perdón. Vivo en un pueblo y no estoy acostumbrado a ver o leer "Jeroen" en ningún lado, y cuando pasa me emociono...
Claramente el programador original era un HdP (porque seguro que no está ni documentada) o, los más probable, han ido añadiendo parche sobre parche sobre parche y lo que era una consulta normal se ha convertido es un monstruo.
#63 para tabular eso, me temo que necesitas un DIN A2 y un veterano de cobol
Se le da 500$ al ganador, y seguro que se animan 300 becarios-wannabe a descifrarlo.
Tampoco conozco SQL lo suficiente para hacerme una idea exacta de la complejidad de eso, pero mi intuición de programador me lleva a pensar que es un ejemplo de lo que no hay que hacer, y si esto se hace normalmente mi opinión de los programadores que usan SQL acaba de bajar bastante.
Les dije que si, que me lo miraba. Abrí una carpeta especial para guardarlas y lo deje en un cajón. Creo que aún estan esperando una respuesta. Hará unos cuatro años.
Como apunta alguien más arriba, estas consultas las generan con herramientas gráficas.
Supongo que es de una herramienta automática o de alguien que sabe mucho SQL pero muy poco de BD (la JOIN suele sentar como una patada en los dientes a la BD)
llevo años en informática. La consulta más grande que he visto apenas llegaba al folio, y era para hacer prácticas de subconsultas en clase
Normalmente, hasta las consultas más sencillas son propensas a fallos y hay que tener en cuenta muchos aspectos. Consultas de un par de líneas pueden dar muchísimos dolores de cabeza.
La gracia de este envío es que todas esas páginas de papel que aparecen en la fotografía corresponden a una única instrucción SQL.
SQL es un lenguaje de consulta que permite preguntar cosas a una base de datos, por ejemplo imaginate que tienes una base de datos con las fichas de todos los españoles y quieres saber que personas tienen como primer apellido "alvarez", pues escribirias una consulta SQL como que asi:
select * from espanoles where apellido1='alvarez'
Esta es una consulta muy sencillita pero puedes preguntar cosas mucho mas complicadas a la base de datos, de modo que pueden salir consultas mucho mas largas y grandes con instrucciones mas complejas.
El post va de una consulta que tienen cientos de lineas: imaginate que te dan la lista de la compra para que vayas al supermercado, y al final resulta que son 50 paginas de ingredientes, miles de ellos, y te dicen que solo tienes 1 hora para hace la compra y que si te olvidas de comprar algun producto, o compras alguno de más tendras que repetirla.
Pues salvando las distancias es algo parecido, es una locura diseñar una consulta de cientos de lineas, una aberracion: si esa consulta no devuelve la informacion para lo que en teoria se diseño, es decir tiene algun fallo, puede llegar a ser humanamente imposible descubrir cual es el error o tardar semanas o meses en descubrirlo.
No se me da nada mal el SQL, pero me piden que busque un error intermitente en esa query y me echo a llorar.
(Sí, he tenido recientemente casos similares, aunque quizá no tan bestias).
#85 Con una SQL puedes obtener datos de tablas de base de datos. El código SQL es muy potente (si eres habil puedes sacar mucha información y muy bien filtrada con muy pocas líneas de código), y cuanto más largas son las consultas aumenta exponencialmente la posibilidad de que haya un error en ellas, y también hace cada vez más difícil la posibilidad de detectarlo. Con ese tamaño de letra, una consulta así de una página ya sería una locura, así que todo eso es simplemente una chapuza.
#66 Te he encontrado en www.abctelefonos.com. Si que es un nombre poco común ;-D
Además de la consulta, que tiene su gracia, me gustaría saber como lo resolvió. Yo lo habría reprogramado entero, toda la puta aplicación entera, para evitar ese engendro.
Me gustaría ver la estructura de esa bd, para necesitar semejante chorizo!
#9 La query más compleja que me ha tocado optimizar tenía 86 líneas (no se me olvida en la vida) y un plan de ejecución infernal, el día que me toque una de más de 100 líneas hago lo que dice #8
Es un lenguaje en teoría universal y permite consultar, insertar y borrar datos de una base de datos.
Puedes lanzar sentencias SQL directamente contra la base de datos utilizando alguna herramienta que se conecte a la misma o si estas programando una aplicación en cualquier lenguaje introducir esas sentencias en el código para que sea ese programa se comunique con la bd.
Después de escribir este comentario, el código de meneame generará (al menos) una sentencia SQL de inserción y la lanzara a la base de datos para introducir este comentario en la BD.