Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/08/2013, 05:35
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: de que depende la velocidad de la consulta sql del motor o de la pc?

En realidad, no podemos afirmar si está bien o mal estructurada sin ver la consulta. Según tu experiencia y conocimientos, está bien, eso lo entiendo.
Pero mi experiencia analizando código creado por expertos en la base de datos donde actualmente trabajo me dice que hasta los profesionales experimentados y veteranos en este tema, meten la pata al crear las consultas.
Podría mencionarte decenas de casos en el sistema que estoy trabajando, que lleva ya más de una década de evolución, y ha tenido muchísimas mejoras, donde encuentro consultas terriblemente ineficientes en puntos críticos, donde no se esperaría semejante problema.
Por otro lado, la rapidez de una consulta no es algo que pueda estar referido a hardware o consulta únicamente. No se puede hacer ese tipo de planteos, porque carece de sentido: la performance de una consulta debe ser analizada contextualmente: hardware, software, server, DBMS, diseño de datos, uso, accesibilidad, concurrencia, impacto de otros sistemas, dependencias, entorno del negocio, etc., son todos elementos que deben ser considerados a la hora de definir qué tan buena es la consulta, y qué tan necesaria es la optimización.
Un caso (sin detalles): Una tabla que sólo tiene inserciones, se procesa masivamente una vez al año y en batch. ¿Vale la pena corregir la lectura para mejorar la performance? Depende.
Durante seis años no hizo falta porque tenía sólo algunos miles de inserciones al año. Pero hoy tiene decenas de miles al día, y procesarla llevaba luego cinco días de colgaduras. Con sólo cambiar dos campos de parámetro pasó a procesarse en doce minutos.
¿La consulta original era buena?
Si. Pero no cuando el negocio tuvo un cambio que hizo que el impacto en la tabla aumentara cien veces.
Lo que quiero que te quede claro es que una consulta puede estar bien estructurada, y aún así ser ineficiente si hay cambios de contexto, y son esas cosas las que debes prevenir.
Un cambio de hardware no implica necesariamente que la performance mejore mucho. Puede ser a la larga una inversión innecesaria.
Pero si el nivel de acceso y de transacciones se eleva, un cambio de hardware puede volverse necesario.

Como dije: no hay una regla, sino que cada caso debe ser analizado en su contexto y con sus propias características. Por eso muchas veces pedimos que pongan las estructuras y los datos. De lo contrario hay cosas que no se pueden analizar bien.

PD: Tuve ocasión de preguntarle a uno de los más veteranos en el proyecto porqué encontraba consultas tan ineficientes, y me dió dos respuestas: Primero, "cada maestro, con su librito", es decir, si lo aprendieron de una forma tienden a hacerlo de ese modo, aunque sea malo.
Por otro lado, como hubo demasiadas manos en el desarrollo, y decenas de desarrolladores interviniendo, es normal que no todos lo hagan de la misma forma y muchos no lo hagan bien.
Francamente, la primera no me satisfizo, pero era entendible.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 02/08/2013 a las 07:09