Novacreations

Desarollando Software

Hace un tiempo comente sobre las funciones en MySQL que nos pueden ser extremadamente útiles pero al desconocerlas nos obligan a reinventar la rueda por lo que es importante siempre darle una leída a todas las posibilidades que nos ofrece una plataforma.Trabajando en un código desarrollado de forma externa me encontré con unas funciones que cargaban información a una base de datos que tardaban años. Después de ajustar el código logre bajar la velocidad de carga de 5 minutos a 3 segundos.

Fueron dos los puntos que me ayudaron mucho a completar mi objetivo. Esto lo logre retirando la lógica del lado de mi script colocándolo con funciones muy sencillas en la base de datos.

El algoritmo original era el siguiente:

  • Obtenemos el archivo de texto con toda la información y la subimos a la base de datos en una tabla temporal
  • Con un Query obtenemos las filas que deseamos, iteramos con un ciclo for por cada una de ellas.
    • Modificamos los datos y creamos un insert o update por cada fila con los datos formateados a la base de datos
  • Se repite dos o tres veces para obtener diferentes tipos de información.

Esto es lento debido a que tenemos que traer y enviar constantemente información de la base de datos a la aplicación. Podemos ahorrarnos este viaje utilizando el Insert Select de MySQL.

Por ejemplo si tenemos dos tablas: Tabla1(campo1,campo2) y Tabla2(campo3)
Usamos la función para insertar en la tabla2 los resultados que obtenemos de un Query.

Podríamos crear un Query para insertar en tabla2 los datos concatenados de tabla1 con alguna condición:

Insert into Tabla2 (campo3) select concat(campo1,campo2) from Tabla1 where campo1 like ‘a%'

Nos da mucha flexibilidad ya que podemos crear un query utilizando todas las funciones de manipulación de texto por lo que podemos evitarnos muchas idas y vueltas a la base de datos.

En otro de los múltiples ciclos de esta aplicación el desarrollador obtenía todas las filas de la base de datos, modificaba en php el campo de fecha para respetar el formato de MySQL y volvía a subir los datos. Convertía por ejemplo la fecha 03-Feb-09 a 2009-02-03

¡Tenemos que conocer las funciones que nos ayudan a evitar tanta vuelta!

De un script de cerca de 150 líneas obtenemos un query de una sola línea.

update tabla set campo_fecha = str_to_date(campo_fecha,'%d-%b-%Y');

En este Query utilizamos la función str_to_date para convertir un texto a una fecha. Como segundo parámetro le enviamos el formato en el que se encuentra nuestro texto.

También es bueno checar la función date_format ya que nos permite darle un formato a una fecha almacenada en MySQL, evitando tener que volver a dar un formato en nuestra interfaz.

Recordemos siempre que en lo que son excelentes las bases de datos no es solamente en almacenar información, también nos ayudan a manipular información de una forma muy eficiente. Explotemos todas esas posibilidades que nos ofrecen.

Funciones de fecha:

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

Funciones de texto o stings

http://dev.mysql.com/doc/refman/5.1/en/string-functions.html




Subscribe to email feed



La fábrica de softw

La Fábrica de Software de la Dirección de Innovación y ...

Administradores de A

Durante años aplicación ES File Explorer era la mejor y ...

Apoyo del Conacyt a

El Consejo Nacional de Ciencia y Tecnología (Conacyt), como parte ...

Microsoft Surface St

Esta semana Microsoft anuncio la existencia de su nueva PC ...

Incuba tu proyecto c

¡Buscamos nuevas tecnologías! Si tu proyecto es seleccionado Telcel te otorgará ...

Las 10 funciones de

  Java 8 incluye nueva funcionalidad que nos permite tener un ...

Como usar una funci

Usar una función hash para encriptar una contraseña no es ...

Cómo escribir códi

Nunca supongas a la malicia lo que puede ser explicado ...

Las 114 preguntas de

¿Tienes una entrevista de trabajo en puerta para un posición Java? ...

Believe in technolog

Ziff Davis Publishing es la más grande editorial de contenidos ...