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

algunas preguntas y consultas de funciones y vistas

Estas en el tema de algunas preguntas y consultas de funciones y vistas en el foro de PostgreSQL en Foros del Web. Hola a todos soy nuevo en este foro Necesito saber todo sobre funciones y vistas Hoy logre hacer funciones básicas pero muy básicas en plpgsql ...
  #1 (permalink)  
Antiguo 20/11/2007, 14:41
Avatar de nelsonpostgresql  
Fecha de Ingreso: noviembre-2007
Mensajes: 20
Antigüedad: 17 años, 1 mes
Puntos: 0
Pregunta algunas preguntas y consultas de funciones y vistas

Hola a todos soy nuevo en este foro
Necesito saber todo sobre funciones y vistas
Hoy logre hacer funciones básicas pero muy básicas en plpgsql y tengo algunas. pero las vista no las se hacer.
Preguntas a si que hay van:

¿Que es volatilidad al crear una función?

¿Se pueden llamar vista desde funciones?

¿Si quiero por ejemplo recupera varios registro de una tabla es mas conveniente hacer una función o una vista?

¿un las funciones se pueden ejecutar consulta anidadas?

En que lenguaje es más conveniente hacer las funciones porque pgadminIII tiene variar opciones c, plpgsql, sql, internal y cual es más fácil y rápido de aprender.

Porque tanta pregunta lo que para es que tengo que hacer un informe que consulta a toda la base de datos y son muchos datos. Lo hago con php pero tengo miedo que por la envergadura de las consulta el php tenga un timeout y no puede desplegar la información necesaria claro con lo que significar perder tiempo en hacer esas funciones un php.

por ejemplo tengo este codigo un php

function personal_que_trabajo($fecha_inicial, $fecha_final, $item,$cod_centro){
include('conexion.php');
$costodelitem=0;
$sql = "select distinct rut from personal_report where fecha between '$fecha_inicial' and '$fecha_final' and items='$item' and cod_centro='$cod_centro';";
$consulta = pg_exec($conexion, $sql);
if (pg_num_rows($consulta))
{
while ($filas = pg_fetch_array($consulta))
{
$rut = $filas["rut"];
$sql2 = "select valor_hora from valor_hora where rut='$rut' and desde<='$fecha_inicial' and hasta>='$fecha_final' UNION select sum(horas) from personal_report where rut='$rut' and fecha between '$fecha_inicial' and '$fecha_final' and items='$item' and cod_centro='$cod_centro'";
$consulta2 = pg_exec($conexion, $sql2);
if (pg_num_rows($consulta2))
{
$contador=0;
$datos=array();
while ($filas = pg_fetch_array($consulta2))
{

$contador++;
if($contador<3){
//echo "valor horas".$filas["valor_hora"];
array_push($datos,$filas["valor_hora"]);

}
}$costoenhoras=$datos[0]*$datos[1];
$costodelitem+=$costoenhoras;

}
}
}
if($costodelitem==0){
return $costodelitem="0";
}else{
return round($costodelitem,0);//=$fecha_inicial." ". $fecha_final." ". $item." ".$cod_centro;
}
}
esta funcion retorna una variable esto quiero hacerlo pero con funciones plpgsql las llamo de php y listo mucho mas rapido. me entienden.


Pd: alguien tiene un buen manual para vistas o plpgsql por favor compártalo o donde estas en la documentación de postgresql las funciones y las vista.

De antemano gracias
Una cosa se me olvida ta’ bueno este foro

Última edición por nelsonpostgresql; 20/11/2007 a las 15:07 Razón: agregar detalles
  #2 (permalink)  
Antiguo 21/11/2007, 03:14
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 10 meses
Puntos: 13
Re: algunas preguntas y consultas de funciones y vistas

Hola,

Cita:
¿Que es volatilidad al crear una función?
A VOLATILE function can do anything, including modifying the database. It can return different results on successive calls with the same arguments. The optimizer makes no assumptions about the behavior of such functions. A query using a volatile function will re-evaluate the function at every row where its value is needed.
Seguramente tu tradución será mejor que la mia.


Cita:
¿Se pueden llamar vista desde funciones?
Si


Cita:
¿Si quiero por ejemplo recupera varios registro de una tabla es mas conveniente hacer una función o una vista?
Una select!


Cita:
¿un las funciones se pueden ejecutar consulta anidadas?
Si


Cita:
En que lenguaje es más conveniente hacer las funciones porque pgadminIII tiene variar opciones c, plpgsql, sql, internal y cual es más fácil y rápido de aprender.
Si se puede sql, sino el que te sea más comodo.


Cita:
Porque tanta pregunta lo que para es que tengo que hacer un informe que consulta a toda la base de datos y son muchos datos. Lo hago con php pero tengo miedo que por la envergadura de las consulta el php tenga un timeout y no puede desplegar la información necesaria claro con lo que significar perder tiempo en hacer esas funciones un php.
No entiendo que problema puedes tener porque la consulta tarde más o menos con php, no he trabajado con php.


Cita:
Pd: alguien tiene un buen manual para vistas o plpgsql por favor compártalo o donde estas en la documentación de postgresql las funciones y las vista.
http://www.postgresql.org/docs/8.2/i...e/plpgsql.html
http://www.postgresql.org/docs/8.2/i...ial-views.html

Un saludo
  #3 (permalink)  
Antiguo 23/11/2007, 08:52
Avatar de nelsonpostgresql  
Fecha de Ingreso: noviembre-2007
Mensajes: 20
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: algunas preguntas y consultas de funciones y vistas

Gracias por las respuestas

Te explico lo de php.


El script de php tiene un limite máximo para ejecutarse. Por ejemplo 60 segundo si el script excede ese limite devuelve un error de time out. Si consultas a todo una base de datos con 200.000 registros por tabla y una que otra consulta anidada y con operaciones matemáticas que es lo que tengo que hacer en el informe. Lo más probable es que excedas ese limite de 60 segundos por ese necesito optimizar lo mas posible las consultas.
  #4 (permalink)  
Antiguo 23/11/2007, 13:38
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: algunas preguntas y consultas de funciones y vistas

y la consulta es...???

Generalmente, el problema de optimizar una consulta, está en mejorar la query que hace el select...
__________________
Gracias de todas todas
-----
Linux!
  #5 (permalink)  
Antiguo 26/11/2007, 04:01
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 10 meses
Puntos: 13
Re: algunas preguntas y consultas de funciones y vistas

Cita:
Iniciado por nelsonpostgresql Ver Mensaje
Gracias por las respuestas

Te explico lo de php.


El script de php tiene un limite máximo para ejecutarse. Por ejemplo 60 segundo si el script excede ese limite devuelve un error de time out. Si consultas a todo una base de datos con 200.000 registros por tabla y una que otra consulta anidada y con operaciones matemáticas que es lo que tengo que hacer en el informe. Lo más probable es que excedas ese limite de 60 segundos por ese necesito optimizar lo mas posible las consultas.
ehhh estamos en las mismas, si en lugar de montar la select en php que tardaria más de 60 segundos, llamas a un procedimiento en postgres que monta esa select que tarda más de 60 segundos te seguiría saltando el timeout! no?

Un saludo
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 11:40.