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!