On 8/22/06, ernesto contreras <eeljuri(at)gmail(dot)com> wrote:
>
> Amigos, tengo una simple tabla con datos de "clientes", la consulta que
> mayormente se efectúa es por nombre, apellido o una combinación de ambos,.
> Se crearon tres índices:
>
> uno único por un campo de "identificación "
> uno por "apellido"
> otro por "nombre y apellido"
>
> la tabla tiene 3.500.000 registros, pero se pensaba que el optimizador se
> comportaba similar al de "oracle" cuando se utiliza el operador "like", es
> decir,
>
> nombre like ('monte%'), en este caso lo usa (oracle) ya que el comodin no
> está al principio, claro que no lo usa completo, pero ayuda.
>
> La cuestión es que estamos sustituyendo una base de datos oracle y debe
> quedar igual o mejor.
>
> Datos de la estructura, índices y los Select's:
>
> Column | Type | Modifiers
> -----------+------------------------+-----------
> nomter | character varying(240) |
> apeter | character varying(50) |
> numid | numeric(14,0) |
> telef | character varying(12) |
> email1 | character varying(100) |
> email2 | character varying(100) |
> codciudad | character varying(3) |
>
> Indexes:
> "tercero_pkey" UNIQUE, btree (numid, dvid, tipoid)
> "id_tercero3" btree (nomter, apeter)
> "id_tercero4" btree (apeter)
>
>
> Búsqueda por "apellido"
>
> explain select nomter, numid from tercero
> where apeter like ('JUAN%');
> QUERY PLAN
> ------------------------------------------------------------
> Seq Scan on tercero (cost=0.00..48388.32 rows=1 width=26)
> Filter: ((apeter)::text ~~ 'JUAN%'::text)
> (2 rows)
>
>
> Búsqueda por "nombre"
>
> explain select nomter, numid from tercero
> where nomter like ('%CASTRO%') and apeter like ('JUAN%');
> QUERY
> PLAN
>
> ----------------------------------------------------------------------------------------
> Seq Scan on tercero (cost=0.00..51686.39 rows=1 width=26)
> Filter: (((nomter)::text ~~ '%CASTRO%'::text) AND ((apeter)::text ~~
> 'JUAN%'::text))
> (2 rows)
>
>
> Agredecemos sus comentarios y/o sugerencias.
>
>
>
>
>
>
>
>
>