Knowledge base: Apia
|
Language: English
|
History
|
![]() |
|
![]() |
|
|
|
|
|
[ AHF00145 ] Melhora da performance em consultas paginadas
Summary
Melhora-se o tempo de execução das setenças SQL das consultas do usuário paginadas sobre a base de dados PostgreSql 8.3.
It is applied to
Cause
A função gen_tmp_rank() do Apia, para PostgreSql 8.3 utilizava de forma pouco eficiente a estrutura interna de uma tabela temporária para obter os registros que devem ser apresentados pela consulta paginada. Symptoms
As telas das consultas paginadas do Apia, como por exemplo: Monitoração de documentos personalizado, Lista de tarefas personalizada, etc., demoram em ser carregadas na tela do navegador, independentemente da página na qual se estiver. Solution
Mediante a atualização da função gen_tmp_rank() do Apia, consegue-se melhorar muito os tempos de resposta, tendo como resultado, os dados em tela em um tempo menor, em comparação com o comportamento anterior. A seguinte sentença SQL deve ser executada para versões do Apia 2.3.0, 2.3.1 e 2.4.0 (ou superiores) que se estiverem executando sobre PostgreSql 8.3. Para o caso de PostgresSql 8.4 não é preciso realizar a atualização. CREATE OR REPLACE FUNCTION gen_tmp_rank(p_select character varying, p_order_by character varying) RETURNS void AS ' declare r RECORD; declare v_row_ant varchar(1000); declare v_row_now varchar(1000); declare update_sql varchar(3000); declare update_batch varchar(50000); declare i integer; begin i := 0; update_sql := ''''; update_batch := ''''; EXECUTE ''create temporary table tmp_'' || pg_backend_pid() || '' (a int)''; if ((select count(0) from pg_tables t, pg_tables t2 where t.tablename = ''tmp_rank'' and t.schemaname=t2.schemaname and t2.tablename=''tmp_'' || pg_backend_pid()) > 0) then EXECUTE ''drop table tmp_rank''; end if; EXECUTE ''DROP TABLE tmp_'' || pg_backend_pid(); v_row_ant := ''''; EXECUTE ''CREATE TEMPORARY TABLE tmp_rank AS select * from ('' || p_select || '') as foo order by '' || p_order_by; EXECUTE ''alter table tmp_rank add column rank serial''; EXECUTE ''GRANT ALL ON TABLE tmp_rank TO public''; END; ' LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER; Related elements
Related from
Suggested items
|
|