Buenas tardes, muchach@s estoy intentando hacer un codigo en el que despues de introducir un numero de cedulad de identidad en un textbox ejecute una funcion en la que realice una busqueda en base de datos y me traiga nombre y apellido de la tabla tbl_persona, mi codigo lo hace pero el problema es que tarda aproximadamente 1min, cuando hago el query desde pgadmin tarda 1 segundo. quiero saber si estoy haciendo algo mal(Cabe destacar que la tabla tiene aproximadamente 25 millones de registros ). aqui mi codigo
el div desde el form (Create)
<div class="row">
<?php echo $form->labelEx($model,'Busque una persona');?>
<?php echo CHtml::activeTextField($model,'buscarcedula',
array('value'=> ($model->isNewRecord ? '' : $model->idpersona0->cedula),
'id'=>'cedula','style'=>"width:10%",'onkeypress'=>'return soloNumeros(event, this)',
'ajax'=>array(
'type'=>'POST',
'url'=>CController::createUrl('TblPersona/buscarnombrecompletoMA'),
'update'=>'#nombrediv'
)
));?>
<div id="nombrediv">
<?php echo $form->textField($model,'idpersona',array('style'=>'display:none')); ?>
<?php echo $form->textField($model,'datos',array('value'=>($model->isNewRecord ? '' : $model->idpersona0->nombre.' '.$model->idpersona0->apellido), 'style'=>'width:50%', 'readonly'=>true)); ?>
</div>
</div>
mi funcion de busqueda.
public function actionbuscarnombrecompletoMA()
{
$cedula2 = $_POST['TblMaximaautoridad']['buscarcedula'];
if (isset($cedula2)){
$idpersona2=Yii::app()->db->createCommand("SELECT id FROM tbl_persona WHERE cedula = ".$cedula2)->queryScalar();
$nombres=Yii::app()->db->createCommand("SELECT nombre FROM tbl_persona WHERE cedula = ".$cedula2)->queryScalar();
$apellidos=Yii::app()->db->createCommand("SELECT apellido FROM tbl_persona WHERE cedula = ".$cedula2)->queryScalar();
if ($nombres != ''){
echo CHtml::tag('input', array('id'=>'TblMaximaautoridad_idpersona','type'=>'text' ,
'value' => $idpersona2, 'readonly'=>true, 'name'=>'TblMaximaautoridad[idpersona]','style'=>'width:5%; display:none'));
echo CHtml::tag('input', array('id'=>'TblMaximaautoridad_datos','type'=>'text' ,
'value' => $nombres.' '.$apellidos, 'readonly'=>true, 'style'=>'width:50%'));
} else {
echo CHtml::tag('input', array('id'=>'TblMaximaautoridad_idpersona','type'=>'text' ,
'value' => '', 'readonly'=>true, 'name'=>'TblMaximaautoridad[idpersona]','style'=>'width:5%; display:none'));
echo CHtml::tag('input', array('id'=>'TblMaximaautoridad_datos','type'=>'text' ,
'value' => 'Personal no registrado', 'readonly'=>true, 'style'=>'width:50%'));
}
}else{
break;
}
}