Ver Mensaje Individual
  #12  
Antiguo 01-03-2008
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Reputación: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Los planes han ido mejorando con cada versión de firebird. Hay que tener cuidado porque puede haber diferencias abismales entre unos y otros, obviamente, en cuanto a velocidad de proceso.
Normalmente, cuando encuentro alguna sentencia que tarda más de la cuenta, la analizo con IBPlanAnalizer (un poco obsoleto, pero muy efectivo) hasta encontrar el "punto" de mejor rendimiento, normalmente añadiendo o cambiando índices.

Desde hace años tengo una opción en "utilidades" para recalcular los índices, viene a ser lo mismo que has escrito, Al.
Código Delphi [-]
procedure TfrmRecalcularPlanes.btAceptarClick(Sender: TObject);
begin
//  inherited;
    if MensajeConfirmacion('Desea recalcular las estadsticas de uso de índices?' ) <> mrYes then
        exit;
    btAceptar.Enabled := false;
    btCancelar.Enabled := false;
    //
    try
        with qrConsulta do
        begin
            Close;
            SelectSQL.Text := 'Select * from RDB$INDICES where RDB$STATISTICS is not null';
            Open;
            Last;
            pbProgreso.Max := qrConsulta.RecordCount;
            First;
        end;
        while not qrConsulta.Eof do
        begin
            qrSql.Close;
            qrSql.Sql.Text := 'Set statistics index '+qrConsulta.FieldByName('RDB$INDEX_NAME').AsString;
            qrSql.ExecQuery;
            //
            qrConsulta.Next;
            pbProgreso.StepIt;
        end;
        //
    finally
        pbProgreso.Position := 0;
        btCancelar.Enabled := true;
    end;
    MensajeInformacion('Proceso concluido');
    close;
end;
El IBPlanAnalizer está aquí.

Última edición por Casimiro Notevi fecha: 03-12-2015 a las 16:39:49.
Responder Con Cita