Abertura de Form muito lenta

Criei um form em abas. Esse form consulta 4 tabelas para abrir:

  1. Imóveis (campos varchar);
  2. Tipos de apto (campos varchar);
  3. Imagens (campo multiupload - no banco como BLOB) - aqui insiro 20 imagens (100kb cada) por imóvel incluído no sistema;
  4. Arquivos (campo documento) - insiro arquivos pdf.

O banco de dados tem cerca de 450 imóveis.
Tudo funciona bem nas grids e consultas. Mas quando peço para abrir um formulário de imóvel leva uns 30 a 40 segundos para abrir.
Não sei o campo virtual das imagens criado pelo multiupload está deixando tudo lento…enfim…
Como melhorar isso?

Oi Wagner, o tempo da lentidão pode ser o retorno do SQL, caso seja, você pode criar uma grid para exibir os imóveis e criar um botão Novo nesta grid chamando a aplicação de formulário com estado de novo registro (pode usar sc_apl_conf para controlar inserção e edição) apenas para inserir os imóveis, sem fazer paginação no form, deixe esta função para a grid

Para o usuário Admin a inserção está assim. Clico em novo e rapidamente abre o formulário para inserir as informações.
Já para o usuário tenho uma grid que lista (após aplicar os filtros que o usuário quer) todos os imóveis. Quando clico em abrir uma ficha de imóvel (não editável para os usuário corretor) aí aparece o problema. Lentidão na hora da abertura da ficha do imóvel.

Após os 30s abre este formulário de consulta:

Entendi, bem faça o seguinte use um imóvel de exemplo e execute todas as querys que o form faz diretamente no banco de dados, veja se o tempo para executar esta semelhante ao da aplicação. 450 registros não é muita coisa, mas caso você não esteja usando chave primária na query isso pode levar a lentidão (Já reduzi uma query de 1 min para 1s apenas utilizando a chave primária). Caso o banco de dados esteja fazendo as querys do form rapidamente então a lentidão não é do banco, eu recomendaria verificar as configurações do php.ini para melhorar a performance do servidor.

Eu fiquei cabreiro com o fato de que quando removi a aba das imagens o problema parou. Mas no campo documentos (que permaneceu) não dava esse problema. Pois bem. Mexi e comparei os dois campos. Descobri o que faltava. Na tabela imagens do BD não tinha o campo ‘imagename’ na tabela de imagens. Acredito que o SC ficava procurando as imagens pelo nome no BD todo e depois, quando não achava, buscava pelo ID das imagens nas chaves estrangeiras dos prédios (suponho). Isso deixava a abertura do formulário lenta demais.
Basta colocar o campo na tabela de imagens e depois, na campo virtual de imagem (multiupload) indicar o nome da imagem (Varchar) no BD.
Agora o sistema todo ficou mais rápido…‘o inferno está nos detalhes’…

A solução durou 24h. Agora voltou tudo de novo…o mesmo problema…

1 Curtida

Como adicionar chave primária? Isso é no SC ou no banco de dados?

No banco de dados
ALTER TABLE nome_tabela
ADD PRIMARY KEY (campo);

Criei um index. Para o campo multiupload de imagens e de documentos.
Ficou um bala a abertura do formulário. Ontem, porém, quando adicionei o campo ‘imagename’ que faltava, também ficou uma bala. Amanhã vou ver como está. Se a solução agora vai ser permanente ou temporária.
Aprendi aqui: https://www.youtube.com/watch?v=gXR9wQh-o_k

1 Curtida