Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Optimización de tiempo de ejecución de Update en Sentencia SQL (https://www.clubdelphi.com/foros/showthread.php?t=87729)

mamcx 02-03-2015 19:04:45

Pues para eso son los triggers. Si tienes desnormalizado los datos, es la forma de mantenerlos en sincronia. Las BD relacionales no estan optimizadas para trabajo en BATCH, sino para procesar conjuntos "pequeños" de datos. Que tanto se puede optimizar lo que pides es MUY dependiente de que motor tenga, su plan de ejecucion y otros factores...

Lo que responde a que es FALSO que porque uses SQL "estandar" entonces deberia desempeñar igual. "SELECT * FROM ???" es una cadena de texto! NO TIENE IMPLICITO NADA MAS!

Como rayos se interprete esa cadena, es muy variable. Si hasta montan sql a correr sobre jsons, xmls, archivos de excel, etc....

Casimiro Notevi 22-09-2016 13:55:25

Cita:

Empezado por Rocio90 (Mensaje 509015)


Por favor, deja de escribir tonterías en cualquier sitio. Gracias.

Rocio90 22-09-2016 13:56:22

Hola perdon ya lo borro queri aponer un enlace a un pdf pero lo pegue mal
http://www.slideshare.net/hiveshare/...nsultas-oracle

Casimiro Notevi 22-09-2016 14:04:03

Cita:

Empezado por Rocio90 (Mensaje 509017)
Hola perdon ya lo borro queri aponer un enlace a un pdf pero lo pegue mal
http://www.slideshare.net/hiveshare/...nsultas-oracle

Muchas gracias, aunque lo planteado en este hilo no tiene nada que ver con oracle.

olbeup 23-09-2016 09:25:07

Hola mamcx,

que tal ésta SQL:
Código SQL [-]
UPDATE Movimientos
  SET
    TIPO = T.TIPO
  FROM Movimientos AS M
    INNER JOIN (
                  SELECT
                      M.CODIGO
                      ,C.TIPO
                    FROM Movimientos AS M
                      INNER JOIN Clientes AS C
                        ON M.CLIENTE = C.CODIGO
                    GROUP BY M.CODIGO, C.TIPO
                ) AS T
      ON T.CODIGO = M.CODIGO
  WHERE T.TIPO = 1
Un saludo.

mamcx 23-09-2016 16:25:07

Bueno si te funciona entonces que quieres que te diga?

Lo unico es que el filtro WHERE T.TIPO = 1 se puede poner en la consulta interna (no se si en tu motor eso seria una optimización, igual es mejor tener "cerca" las condiciones)

olbeup 24-09-2016 00:08:39

en el filtro he puesto eso como si no quieres poner nada, esa consulta si esta optimizada.

Un saludo.


La franja horaria es GMT +2. Ahora son las 20:08:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi