[SOLUCIONADO]Mejorar tiempo de respuesta en ef_combo_editable

Buena tarde, tengo un ef_combo_editable, el cual me permite buscar por identificación y/o nombre entre unos 62.000 registros, pero el tiempo de respuesta es lento, como se podría mejorar la velocidad de respuesta ? el código utilizado es:

static function get_pacientes($filtro=null, $locale=null) {
if (! isset($filtro) || trim($filtro) == ‘’) {
return array();
}
$where = ‘’;
if (isset($locale)) {
$where = " AND (pac_nombre_completo LIKE “.quote($locale).” OR pac_identificacion LIKE “.quote($locale).”)";
}
$sql = “SELECT pac_id, (‘[’ || pac_identificacion || '] ’ || pac_nombre_completo) AS pac_nombre_completo
FROM pacientes
WHERE pac_nombre_completo ILIKE ‘%{$filtro}%’ or pac_identificacion ILIKE ‘%{$filtro}%’
$where;”; //print_r($sql);
return toba::db()->consultar($sql);
}

function get_paciente($id = null)     {
    if (! isset($id)) {
        return array();
    }
    $sql = "SELECT pac_id, pac_nombre_completo
              FROM pacientes
             WHERE pac_id = '$id'
          ORDER BY pac_nombre_completo";
     $result = toba::db()->consultar($sql);

    if (! empty($result)) {
        return $result[0]['pac_nombre_completo'];
    }
}

Gracias por la ayuda

Hola Jhon,

el tema esta en que tantos registros se filtren, si la busqueda mas comun es lo suficientemente mala como para que se retornen 1000 personas, esos 1000 registros deben viajar al cliente que los tiene que parsear e incorporar al combo, no es algo que vaya a ser bello a la vista, ni tampoco demasiado performante. Para dichos casos es mejor un popup que un combo editable.

Por otro lado, esta tambien lo que tarde la consulta… pero en dicho caso deberias consultar con un DBA para ver como pueden generar un indice que mejore la performance,.
Algo que veo en la consulta es que estas filtrando sobre una columna que es producto de una concatenacion, eso implica que el motor tiene que generar las 62000 filas antes de poder filtrar.
Lo mejor seria que hagas un explain sobre la consulta para ver que “plan” genera postgres y luego mediante modificaciones (indices, filtro distintos) veas si lo podes mejorar.

Al menos si la mayor parte del tiempo se usa ahi, sino lo que debes lograr es que el filtro sea mas exacto de manera de devolver menos registros.

Saludos

Reichard, gracias
Descartamos el ef_combo_editable y más bién dejamos un solo campo de la identificación como ef_editable y por JS validamos y cargamos si existe, si no se dejan los campos vacios para llenar