исходные данные
таблица table1 в ней 1.5млн записей состоит из одного поля id integer
выполняем запрос
select  count(*) from table1
время 1.6 сек

делаем вьюху
CREATE VIEW v1( ID)
AS
select id from table1
;
выпоняем
select count(*) from v1
время 1.6сек
пока все хорошо

создаем процедуру
CREATE PROCEDURE P1
returns (
   id integer)
as
begin
 for select id from table1
 into :id
 do
   suspend ;
end

и выполняем запрос
select count(*) from p1
время 4.2сек

нифига себе накладные расходы на вызов процедуры!

но идем дальше
CREATE PROCEDURE P2
returns (
   id integer)
as
begin
 for select id from p1 into :id do
   suspend;
end

т.е. внутри процедуры вызываем еще одну
и время получаем уже 7 сек

эти накладные расходы никак не оптимизировать?
И почему их нет у view а есть только у SP?


--
С уважением
Кочмин Александр
Firebird Foundation associate member #257

Ответить