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

Ayadaaa mi consulata se tarda mucho en ejecutarse

Estas en el tema de Ayadaaa mi consulata se tarda mucho en ejecutarse en el foro de PostgreSQL en Foros del Web. Hola tengo tiempo que no publico nada... pero llevo dos días buscándole solución a mi problema espero me ayuden!! tengo una BD en Postgresql con ...
  #1 (permalink)  
Antiguo 30/08/2011, 07:20
Avatar de User_Kathy  
Fecha de Ingreso: septiembre-2010
Mensajes: 38
Antigüedad: 11 años, 3 meses
Puntos: 8
Ayadaaa mi consulata se tarda mucho en ejecutarse

Hola

tengo tiempo que no publico nada... pero llevo dos días buscándole solución a mi problema espero me ayuden!! tengo una BD en Postgresql con una tabla que contiene todos los datos personales es decir nombre completo, fecha de nacimiento estado civil, etc... son como 8 campos en total... y esa tabla la llene con una replica que encontré por hay de la base de datos de todas las cédulas de de mi país (Venezuela)... el caso es que son aprox 27000000 registros y una consulta en esa tabla dura aprox 2 minutos ¿ o mas ? y necesito optimizar la consulta

NOTA: ya indexe el campo cédula y no paso nada luego investigando ley algo de los cluster y lo ejecute sobre la tabla pero nada help me ya no se me ocurre nada
  #2 (permalink)  
Antiguo 30/08/2011, 08:05
Avatar de death_nemesis  
Fecha de Ingreso: abril-2009
Ubicación: Santiago - Chile
Mensajes: 147
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Ayadaaa mi consulata se tarda mucho en ejecutarse

Si puedes poner la Query y el modelo de las tablas podríamos ayudarte un poco mas
  #3 (permalink)  
Antiguo 30/08/2011, 08:15
Avatar de User_Kathy  
Fecha de Ingreso: septiembre-2010
Mensajes: 38
Antigüedad: 11 años, 3 meses
Puntos: 8
Respuesta: Ayadaaa mi consulata se tarda mucho en ejecutarse

Código:
-- SQL QUE CREA LA TABLA
CREATE TABLE "Visitas"."TVisitantes"
(
  "IdVisitante" integer NOT NULL DEFAULT nextval('"Visitas"."TVisitantes_IdVisitante_seq"'::regclass),
  "CedulaVisitante" integer NOT NULL,
  "Nacionalidad" "char" NOT NULL,
  "PrimerNombre" character(50),
  "PrimerApellido" character(50),
  "SegundoNombre" character(50),
  "SegundoApellido" character(50),
  "FechaNacimiento" character(12) NOT NULL,
  "Sexo" "char" NOT NULL,
  "EdoC" character(2),
  CONSTRAINT pk PRIMARY KEY ("Nacionalidad", "CedulaVisitante")
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "Visitas"."TVisitantes" OWNER TO aypklezama;

-- Index: "Visitas".cedula

-- DROP INDEX "Visitas".cedula;

CREATE INDEX cedula
  ON "Visitas"."TVisitantes"
  USING btree
  ("Nacionalidad", "CedulaVisitante");
ALTER TABLE "Visitas"."TVisitantes" CLUSTER ON cedula;
y la consulta es simple porque solo quiero un registro que tiene una cedula unica

Código:
$sql='SELECT * FROM "Visitas"."TVisitantes" WHERE "CedulaVisitante"='.$cedula;
  #4 (permalink)  
Antiguo 30/08/2011, 08:54
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 13 años, 3 meses
Puntos: 15
Respuesta: Ayadaaa mi consulata se tarda mucho en ejecutarse

yo creeria que lo unico que se puede hacer es quitar el * y poner los campos exactos que necestias a menos que los necesites todos, porque de ser así no hay nada que hacer.

tambien te ayudaría, poner un constraint de unique al campo cédula.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co

Última edición por miguec04; 30/08/2011 a las 09:02 Razón: Mejorar la respuesta
  #5 (permalink)  
Antiguo 30/08/2011, 09:05
Avatar de User_Kathy  
Fecha de Ingreso: septiembre-2010
Mensajes: 38
Antigüedad: 11 años, 3 meses
Puntos: 8
Respuesta: Ayadaaa mi consulata se tarda mucho en ejecutarse

si tengo que mostrarlos todo... ha ver lo que pasa es que este sistema es viejo es decir! lo tenia por hay olvidado y lo retome pero no le había hecho backup a la BD y bueno cree toda la estructura de nuevo... la primera vez que lo hice con el index fue mas que suficiente... ahora no entiendo porque no lo hace.. tampoco veo el error llevo dos días buscando una solución se que no es la tabla porque la deje con dos registro nada mas y lo hace rápido pero cuando la volví a llenar se ralentizo de nuevo!

igual gracias
  #6 (permalink)  
Antiguo 31/08/2011, 19:03
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 12 años, 9 meses
Puntos: 360
Respuesta: Ayadaaa mi consulata se tarda mucho en ejecutarse

si tienes un id visitante por que tienes la primary compuesta de nacionalidad y cedula?
Que funcion cumple idvisitante?
Una primary compuesta es mas lenta que una primary unitaria. Tienes la total necesidad de manejarlo asi?

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 01/09/2011, 11:35
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 13 años, 3 meses
Puntos: 15
Respuesta: Ayadaaa mi consulata se tarda mucho en ejecutarse

no me habia fijado en ese detalle pero si, puede poner el idvisitante como primary key, y poner un constraint de unique compuesto de nacionalidad y cedula, lo otro cuantos registros tiene la tabla?, si tiene un millon de registros se toma sus segunditos. toca esperar.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #8 (permalink)  
Antiguo 01/09/2011, 13:21
Avatar de User_Kathy  
Fecha de Ingreso: septiembre-2010
Mensajes: 38
Antigüedad: 11 años, 3 meses
Puntos: 8
Respuesta: Ayadaaa mi consulata se tarda mucho en ejecutarse

mmm bueno primeramente tenia como pk el idvisitante pero igual es muy lento por eso lo intente con nacionalidad y cedula el id es una referencia de campo único no me sirve para mas nada pues la búsqueda la hago solo por cédula
  #9 (permalink)  
Antiguo 01/09/2011, 21:28
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 12 años, 9 meses
Puntos: 360
Respuesta: Ayadaaa mi consulata se tarda mucho en ejecutarse

Debes tener algo mal en la conf. de postgresql.
Yo tengo BD con mas de 5 millones de registros y cuando filtro por cedula, no se demora ni 3 segundos.
No tiene nada de raro. depronto la consulta ya está cacheada y es asi de rapida, pero igual no debería tener los tiempos que mencionas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #10 (permalink)  
Antiguo 02/09/2011, 07:10
Avatar de User_Kathy  
Fecha de Ingreso: septiembre-2010
Mensajes: 38
Antigüedad: 11 años, 3 meses
Puntos: 8
Respuesta: Ayadaaa mi consulata se tarda mucho en ejecutarse

Bueno eso si puede ser.. y eso explicaría porque antes de formatear mi maquina no daba este error =D buscare la manera de configurarlo

Etiquetas: bd, dato, postgres, tarda
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:45.