From 3a4050985a0a0aca2ed5636eaad16b1c4fa636a0 Mon Sep 17 00:00:00 2001 From: Eriksen Costa Date: Thu, 16 Sep 2010 09:51:32 -0300 Subject: [PATCH] Adicionados índices para melhorar performance de queries SQL SELECT que apresentaram lentidão em bancos de dados com mais de 2 mil docentes --- ieducar/misc/database/deltas/30_cria_indices_otimizacao_queries_quadro_horarios.sql | 33 +++++++++++++++++++++++++++++++++ ieducar/misc/database/ieducar.sql | 29 +++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 0 deletions(-) create mode 100644 ieducar/misc/database/deltas/30_cria_indices_otimizacao_queries_quadro_horarios.sql diff --git a/ieducar/misc/database/deltas/30_cria_indices_otimizacao_queries_quadro_horarios.sql b/ieducar/misc/database/deltas/30_cria_indices_otimizacao_queries_quadro_horarios.sql new file mode 100644 index 0000000..5565222 --- /dev/null +++ b/ieducar/misc/database/deltas/30_cria_indices_otimizacao_queries_quadro_horarios.sql @@ -0,0 +1,33 @@ +-- // + +-- +-- Cria índices adicionais para melhorar performance de queries SQL SELECT +-- que apresentaram lentidão em bancos de dados com mais de 2 mil docentes. +-- +-- @author Eriksen Costa Paixão +-- @license @@license@@ +-- @version $Id$ +-- + +CREATE INDEX quadro_horario_horarios_busca_horarios_idx + ON pmieducar.quadro_horario_horarios (ref_servidor, ref_cod_instituicao_servidor, dia_semana, hora_inicial, hora_final, ativo); + COMMENT ON INDEX pmieducar.quadro_horario_horarios_busca_horarios IS + 'Índice para otimizar a busca por professores na criação de quadro de horários.'; + +CREATE INDEX servidor_idx + ON pmieducar.servidor (cod_servidor, ref_cod_instituicao, ativo); + COMMENT ON INDEX pmieducar.servidor_idx IS + 'Índice para otimização de acesso aos campos mais usados para queries na tabela.'; + +CREATE INDEX servidor_alocacao_busca_horarios_idx + ON pmieducar.servidor_alocacao (ref_ref_cod_instituicao, ref_cod_escola, ativo, periodo, carga_horaria); + COMMENT ON INDEX pmieducar.servidor_alocacao_busca_horarios IS + 'Índice para otimizar a busca por professores na criação de quadro de horários.'; + +-- //@UNDO + +DROP INDEX pmieducar.quadro_horario_horarios_busca_horarios_idx; +DROP INDEX pmieducar.servidor_idx; +DROP INDEX pmieducar.servidor_alocacao_busca_horarios_idx; + +-- // \ No newline at end of file diff --git a/ieducar/misc/database/ieducar.sql b/ieducar/misc/database/ieducar.sql index b3071fb..e47d778 100644 --- a/ieducar/misc/database/ieducar.sql +++ b/ieducar/misc/database/ieducar.sql @@ -25791,6 +25791,7 @@ INSERT INTO changelog VALUES (26, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '26_cria INSERT INTO changelog VALUES (27, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '27_cria_tabela_modules_educacenso_cod_aluno_e_docente.sql'); INSERT INTO changelog VALUES (28, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '28_cria_tabelas_modules_educacenso_ies_e_curso_superior.sql'); INSERT INTO changelog VALUES (29, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '29_cria_tabela_modules_docente_licenciatura.sql'); +INSERT INTO changelog VALUES (30, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '30_cria_indices_otimizacao_queries_quadro_horarios.sql'); -- @@ -35513,6 +35514,34 @@ CREATE INDEX i_nota_aluno_ref_cod_matricula ON nota_aluno USING btree (ref_cod_m CREATE INDEX i_turma_nm_turma ON turma USING btree (nm_turma); +-- +-- Name: quadro_horario_horarios_busca_horarios_idx; Type: INDEX; Schema: pmieducar; Owner: -; Tablespace: +-- + +CREATE INDEX quadro_horario_horarios_busca_horarios_idx ON quadro_horario_horarios USING btree (ref_servidor, ref_cod_instituicao_servidor, dia_semana, hora_inicial, hora_final, ativo); + + +-- +-- Name: servidor_alocacao_busca_horarios_idx; Type: INDEX; Schema: pmieducar; Owner: -; Tablespace: +-- + +CREATE INDEX servidor_alocacao_busca_horarios_idx ON servidor_alocacao USING btree (ref_ref_cod_instituicao, ref_cod_escola, ativo, periodo, carga_horaria); + + +-- +-- Name: servidor_idx; Type: INDEX; Schema: pmieducar; Owner: -; Tablespace: +-- + +CREATE INDEX servidor_idx ON servidor USING btree (cod_servidor, ref_cod_instituicao, ativo); + + +-- +-- Name: INDEX servidor_idx; Type: COMMENT; Schema: pmieducar; Owner: - +-- + +COMMENT ON INDEX servidor_idx IS 'Índice para otimização de acesso aos campos mais usados para queries na tabela.'; + + SET search_path = portal, pg_catalog; -- -- libgit2 0.21.2