Usuário com melhor resposta
Lentidão para excluir registro

Pergunta
-
Uso VS2010, asp.net, c# sqlserver2008
A aplicação está funcionando, o banco tem apenas 6 mil registro, e hospedado em um servidor online, cada registro tem diversas ligações, e para excluí-lo, preciso remover essas ligações como abaixo:
if (registroFinanceiro.Historico != null)
{
registroFinanceiro.Historico.RegistrosFinanceiros.Remove(registroFinanceiro);
}
if (registroFinanceiro.Escola != null)
{
registroFinanceiro.Escola.RegistrosFinanceiros.Remove(registroFinanceiro);
}
if (registroFinanceiro.Banco != null)
{
registroFinanceiro.Banco.RegistrosFinanceiros.Remove(registroFinanceiro);
}
if (registroFinanceiro.Matricula != null)
{
registroFinanceiro.Matricula.RegistrosFinanceiros.Remove(registroFinanceiro);
}
if (registroFinanceiro.CedenteSacado != null)
{
registroFinanceiro.CedenteSacado.RegistrosFinanceirosCedenteSacado.Remove(registroFinanceiro);
}
if (registroFinanceiro.Aluno != null)
{
registroFinanceiro.Aluno.RegistrosFinanceiros.Remove(registroFinanceiro);
}// PARA FINALMENTE EXCLUIR O REGISTRO
this.acaoRegistroFinanceiro.Excluir(registroFinanceiro);
this.gerente.Salvar();ESTÁ REMOÇÃO DEMORA EM MÉDIA 25 SEGUNDOS, ISSO É NORMAL? COMO POSSO MELHORAR O DESEMPENHO DA EXCLUSÃO?
Álvaro Luiz
- Editado Álvaro Luiz segunda-feira, 6 de abril de 2015 11:58
Respostas
-
Álvaro,
Existem várias alternativas:
- Utilizar Foreign Keys com CASCADE DELETE seria uma delas. Ao se remover o registro principal, todas as dependências são eliminadas em conjunto;
- Montar uma procedure que faz a exclusão do registro e todas as suas dependências. Neste segundo caso, aconteceria uma única chamada ao banco de dados, reduzindo com certeza o tempo para a execução deste conjunto de operações.- Marcado como Resposta Álvaro Luiz segunda-feira, 6 de abril de 2015 12:12
- Não Marcado como Resposta Álvaro Luiz segunda-feira, 6 de abril de 2015 12:16
- Marcado como Resposta Álvaro Luiz segunda-feira, 6 de abril de 2015 22:27
Todas as Respostas
-
Álvaro,
Existem várias alternativas:
- Utilizar Foreign Keys com CASCADE DELETE seria uma delas. Ao se remover o registro principal, todas as dependências são eliminadas em conjunto;
- Montar uma procedure que faz a exclusão do registro e todas as suas dependências. Neste segundo caso, aconteceria uma única chamada ao banco de dados, reduzindo com certeza o tempo para a execução deste conjunto de operações.- Marcado como Resposta Álvaro Luiz segunda-feira, 6 de abril de 2015 12:12
- Não Marcado como Resposta Álvaro Luiz segunda-feira, 6 de abril de 2015 12:16
- Marcado como Resposta Álvaro Luiz segunda-feira, 6 de abril de 2015 22:27
-
-
-
Outra sugestão e até lhe pergunto de quando foi a última vez que esta Máquina recebeu uma boa manutenção em seu Sistema?
Use o "CCleaner" para, além de limar o PC deleta fragmentos no Registro do Windows.
Baixe e teste, verás que a lista de registros sem precisão está muito cheia aí aliviará o serviço do seu computador. Faça desfragmentação de disco para deixar o Windows livre de fragmentos, unindo os arquivos deixando o Sistema mais veloz e retire os programas que desnecessariamente iniciam com o Windows (no MSCONFIG). Se desejar ainda baixar o "Revo Uninstaller" que além também de limar o Windows, tem uma excelente ferramenta de Excluir Evidências no Sistema, ou seja, deleta muitas pastas desnecessárias com seus arquivos, e verás o bom espaço de disco que ele libera, eu uso os dois para meus projetos e há anos!
Execute sempre estas ações para não teres atrasos em seus trabalhos.
Espero ter lhe ajudadoMS INFORMATICA - Projeto Marinner
- Sugerido como Resposta Eduardo.RomeroModerator segunda-feira, 6 de abril de 2015 12:55