Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Como disminuir el tiempo de la consulta?

Estas en el tema de Como disminuir el tiempo de la consulta? en el foro de PostgreSQL en Foros del Web. Buenos dias amigos, tengo la siguiente consulta @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT TO_CHAR ( fecha , 'YYYY/MM/DD' ) AS fecha , hora , ...
  #1 (permalink)  
Antiguo 08/05/2015, 09:41
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Como disminuir el tiempo de la consulta?

Buenos dias amigos, tengo la siguiente consulta

Código SQL:
Ver original
  1. SELECT TO_CHAR(fecha, 'YYYY/MM/DD')AS fecha,hora,temperatura,velocidad_viento,direccion_viento
  2. FROM anemometro
  3. WHERE DATE(fecha) BETWEEN '2013-01-01 00:00' AND '2015-05-08 09:44'

son 785584 filas y el tiempo es 27962 ms

como puedo disminuir el tiempo de la consulta?
  #2 (permalink)  
Antiguo 08/05/2015, 10:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como disminuir el tiempo de la consulta?

Consultas como esa sólo se optimizan con índices.
Pero no queda claro el tipo de dato que tienes en "fecha", porque si es un tipo date, ¿por qué lo comparas con fechas y horas?
No me cierra.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/05/2015, 10:10
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Como disminuir el tiempo de la consulta?

gnzsoloyo gracias por responder, esta es la tabla

Código SQL:
Ver original
  1. CREATE TABLE anemometro
  2. (
  3.   id serial NOT NULL,
  4.   fecha DATE,
  5.   hora TIME WITHOUT TIME zone,
  6.   direccion_viento REAL,
  7.   velocidad_viento REAL,
  8.   unidad CHARACTER VARYING(5),
  9.   velocidad_sonido serial NOT NULL,
  10.   temperatura REAL,
  11.   STATUS CHARACTER VARYING(10),
  12.   CONSTRAINT anemometro_pkey PRIMARY KEY (id)
  13. )
  14. WITH (
  15.   OIDS=FALSE
  16. );
  17. ALTER TABLE anemometro
  18.   OWNER TO postgres;

la consulta me ha funcionado así.

La tabla actualmente tiene 785.613 registros, lo mejor seria cambiar los campos fecha y hora por un campo tipo timestamp?
  #4 (permalink)  
Antiguo 08/05/2015, 10:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como disminuir el tiempo de la consulta?

OK... ¿Y tienes algún indice en ese campo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/05/2015, 10:35
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Como disminuir el tiempo de la consulta?

indice no tengo, cual me recomiendas? por fecha?

Me preocupa es cuando haga el cambio de la tabla osea cuando adicione el tipo timestamp para pasar los datos a la otra columna concatenarlos.
  #6 (permalink)  
Antiguo 08/05/2015, 10:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como disminuir el tiempo de la consulta?

http://www.postgresql.org.ar/trac/wi...zarRendimiento
https://prezi.com/nxdxr9ij_drd/optim...en-postgresql/
https://wiki.postgresql.org/wiki/Consultas_Lentas
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: fecha, select, tiempo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:03.