5 tips de PostgreSQL para optimizar tus aplicaciones | Braintive

PostgreSQL es un sistema de bases de datos opensource, tiene más de 15 años de desarrollo y hoy en día es uno de los motores más poderosos y flexibles para utilizar con cualquier tipo de plataforma. En este post explicamos 5 tips sencillos pero que tal vez no sabías de este motor de bases de datos.

En esta entrada vamos a ver 5 funciones que tal vez no sabías que se podían hacer con PostgreSQL pero que al saber cuándo y dónde utilizarlas nos puede simplificar el desarrollo de nuestras aplicaciones.

1. Un único query que retorne datos asociados de otra tabla.

Por ejemplo, listado de usuarios y los intereses de cada uno (que se encuentan en otra tabla)

Funciones: array_agg y array_to_string

select u.nombre, u.apellido
,(select array_to_string(array_agg(intereses),’,’) from usuario_interes where usuario_id = u.usuario_id) as intereses
from usuario u

Retorna los intereses como: “futbol,basket,tenis”

 

2. Obtener la cantidad total de registros afectados en un LIMIT sin necesidad de realizar otro query count(*).

Ideal para paginación de resultados, pudiendo colocar el total general de registros, más allá del total de cada página.

Función: OVER()

select nombre, apellido, count(*) OVER() as total
from usuarios
limit 10 offset 30

 

3. Obtener un valor determinado sobre un listado de elementos separados por un caracter común.

función: split_part

select split_part(‘a,b,c,d’, ‘,’ , 2);

Resultado: “b”

Ideal para parsear campos en donde se mantiene alguna normalización que permita obtener algún dato en particular. Por dar un ejemplo, un número telefónico separado por “-“, se puede obtener por un lado la característica y por otro la numeración.

 

4- Formateo de fechas y retornarlas en el uso horario correspondiente.

Cuando utilizar now() o current_timestamp para obtener la fecha del sistema, esta se va a guardar en el formato horario del servidor, que seguramente va a ser diferente al nuestro

select to_char(fecha_creacion AT TIME ZONE ‘-03:00′, ‘DD/MM/YYYY’) as fecha
from usuario

 

5- Como usar FullText Index, para realizar búsquedas ágiles y contextuales.

Útil para realizar un única búsqueda y que esta se realize en muchos campos, sin necesidad de utilizar un like por cada campo. Además la performance utilizando fulltext es muy buena y se puedan agregar lógica en las búsquedas.

Crear un campo en la tabla que contengan todos los valores por lo que se quiere ubicar el registro.

search varchar(512);

Crear un campo tsvector para poder indexar el contenido.

textsearchable_index tsvector;

Luego cada vez que se inserta o se actualizan los datos se debe realizar lo siguiente

UPDATE usuario set search = coalesce(nombre,”) || ‘ ‘ || coalesce(apellido,”) || ‘ ‘ || coalesce(email,”);

UPDATE usuario SET textsearchable_index = to_tsvector(search);

Para realizar las búsquedas se debe utilizar

select *
from usuario
where textsearchable_index @@ to_tsquery(‘Juan’)

select *
from usuario
where textsearchable_index @@ to_tsquery(‘Juan & Perez’)

select *
from usuario
where textsearchable_index @@ to_tsquery(‘Jua:*’)

© 2014 Braintive S.A. Todos los derechos reservados.
Seguir

Recibe cada nueva entrada en tu correo electrónico

Unete a otros seguidores: