Dmitriy A. Beloshistov wrote:
Кто меньше?-) Для FB 1.5.x работает такое:

create procedure SYS$SET_INDEXSTAT
returns (ACOUNT INTEGER)
as
declare variable AINDEXNAME varchar(100);
begin
  ACOUNT=0;
  FOR SELECT RDB$INDEX_NAME FROM RDB$INDICES
      WHERE (RDB$SYSTEM_FLAG IS NULL) or (RDB$SYSTEM_FLAG<>1)
  INTO :AINDEXNAME
  DO BEGIN
       EXECUTE STATEMENT 'SET STATISTICS INDEX '||:AINDEXNAME;
       ACOUNT=ACOUNT+1;
     END
  suspend;
end
Тут есть небольшой минус: статистика начнет собираться по ВСЕМ индексам при последующем коммите, что даст длительный зависон программы и тормоза в сервере. Если же делать по очереди с клиента - будут небольшие дырочки в загрузке.

Ответить