<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Braintive &#187; database</title>
	<atom:link href="https://www.braintive.com/tag/database/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.braintive.com</link>
	<description>Hacemos realidad tu proyecto tecnológico</description>
	<lastBuildDate>Tue, 24 Apr 2018 15:28:13 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.7</generator>
	<item>
		<title>5 tips de PostgreSQL para optimizar tus aplicaciones</title>
		<link>https://www.braintive.com/5-tips-postgresql-para-optimizar-tus-aplicaciones/</link>
		<comments>https://www.braintive.com/5-tips-postgresql-para-optimizar-tus-aplicaciones/#comments</comments>
		<pubDate>Tue, 05 Aug 2014 13:03:32 +0000</pubDate>
		<dc:creator><![CDATA[Fernando Finelli]]></dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.braintive.com/?p=1207</guid>
		<description><![CDATA[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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a title="PostgreSQL" href="http://www.postgresql.org" target="_blank">PostgreSQL</a> 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.<br />
<span id="more-1207"></span></p>
<p>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.</p>
<p><strong>1. Un único query que retorne datos asociados de otra tabla.</strong></p>
<p>Por ejemplo, listado de usuarios y los intereses de cada uno (que se encuentan en otra tabla)</p>
<p>Funciones: array_agg y array_to_string</p>
<blockquote><p><em>select u.nombre, u.apellido</em><br />
<em> ,(select array_to_string(array_agg(intereses),&#8217;,&#8217;) from usuario_interes where usuario_id = u.usuario_id) as intereses</em><br />
<em>from usuario u</em></p></blockquote>
<p>Retorna los intereses como: &#8220;futbol,basket,tenis&#8221;</p>
<p>&nbsp;</p>
<p><strong>2. Obtener la cantidad total de registros afectados en un LIMIT sin necesidad de realizar otro query count(*).</strong></p>
<p>Ideal para paginación de resultados, pudiendo colocar el total general de registros, más allá del total de cada página.</p>
<p>Función: OVER()</p>
<blockquote><p>select nombre, apellido, count(*) OVER() as total<br />
from usuarios<br />
limit 10 offset 30</p></blockquote>
<p>&nbsp;</p>
<p><strong>3. Obtener un valor determinado sobre un listado de elementos separados por un caracter común.</strong></p>
<p>función: split_part</p>
<blockquote><p>select split_part(&#8216;a,b,c,d&#8217;, &#8216;,&#8217; , 2);</p></blockquote>
<p>Resultado: &#8220;b&#8221;</p>
<p>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 &#8220;-&#8220;, se puede obtener por un lado la característica y por otro la numeración.</p>
<p>&nbsp;</p>
<p><strong>4- Formateo de fechas y retornarlas en el uso horario correspondiente.</strong></p>
<p>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</p>
<blockquote><p>select to_char(fecha_creacion AT TIME ZONE &#8216;-03:00&#8242;, &#8216;DD/MM/YYYY&#8217;) as fecha<br />
from usuario</p></blockquote>
<p>&nbsp;</p>
<p><strong>5- Como usar FullText Index, para realizar búsquedas ágiles y contextuales.</strong></p>
<p>Ú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.</p>
<p>Crear un campo en la tabla que contengan todos los valores por lo que se quiere ubicar el registro.</p>
<blockquote><p>search varchar(512);</p></blockquote>
<p>Crear un campo tsvector para poder indexar el contenido.</p>
<blockquote><p>textsearchable_index tsvector;</p></blockquote>
<p>Luego cada vez que se inserta o se actualizan los datos se debe realizar lo siguiente</p>
<blockquote><p>UPDATE usuario set search = coalesce(nombre,&#8221;) || &#8216; &#8216; || coalesce(apellido,&#8221;) || &#8216; &#8216; || coalesce(email,&#8221;);</p>
<p>UPDATE usuario SET textsearchable_index = to_tsvector(search);</p></blockquote>
<p>Para realizar las búsquedas se debe utilizar</p>
<blockquote><p>select *<br />
from usuario<br />
where textsearchable_index @@ to_tsquery(&#8216;Juan&#8217;)</p>
<p>select *<br />
from usuario<br />
where textsearchable_index @@ to_tsquery(&#8216;Juan &amp; Perez&#8217;)</p>
<p>select *<br />
from usuario<br />
where textsearchable_index @@ to_tsquery(&#8216;Jua:*&#8217;)</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>https://www.braintive.com/5-tips-postgresql-para-optimizar-tus-aplicaciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.224 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2026-04-15 17:42:24 -->
