Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/08/2011, 10:10
ferranWEB
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
agilizar busqueda y mostrar algun preload

buenas,

tengo una consulta en la cual, quiero encontrar una persona dependiendo de los parámetros de búsqueda. los datos tengo que mirarlos de 3 tablas diferentes, ya que los tengo separados por datos personales, datos profesionales y datos de estudios.

tengo más de 20.000 registros, cuando aplico los parámetros de búsqueda, me tarda una eternidad... tengo una programación tal que asi:

Código:

ini_set('post_max_size','100M'); 
ini_set('upload_max_filesize','100M'); 
ini_set('max_execution_time','1000'); 
ini_set('max_input_time','1000'); 

set_time_limit(0); 


if ( $tipo_experiencia != "" )
{
    $where[] = "DPR.tipo_experiencia='$tipo_experiencia'";
	
}

if ( $provincia != "" )
{
    $where[] = "DP.provincia='$provincia'";
	
}

if ( $sexo != "" )
{
    $where[] = "DP.sexo='$sexo'";
	
}

if ( $nivel_estudios != "" )
{
    $where[] = "DE.nivel='$nivel'";
	
}


if ( $vehiculo != "" )
{
    $where[] = "DO.vehiculo='$vehiculo'";
	
}

if ( $disponibilidad_horaria != "" )
{
    $where[] = "DO.disponibilidad_horaria='$disponibilidad_horaria'";
	
}


if( !empty($where) ) 
{ 
    $where_sql = 'WHERE '.implode(' AND ', $where); 
	$where_sql = $where_sql."AND DC.estado='activo' ORDER BY DP.nombre";

}


$sql1 = "SELECT 
    DP.nombre,
    DP.apellidos,
    DP.sexo,
    DP.provincia,
    DE.nivel,
    DO.disponibilidad_horaria,
    DO.viajar,
    DO.vehiculo,
    DO.permiso_conducir ,
	DPR.tipo_experiencia
FROM 
    datos_candidatos DC
    INNER JOIN datos_personales DP ON DC.idcandidato = DP.idcandidato 
    INNER JOIN datos_estudios DE ON DC.idcandidato = DE.idcandidato 
    INNER JOIN datos_profesionales DPR ON DC.idcandidato = DPR.idcandidato $where_sql";

....
1- hay alguna manera de mejorar mi código para que la búsqueda no resulte tan lenta?

2- hay alguna manera de poner algun 'buscando registros' mientras se ejecuta la consulta?

saludos!