Usuário com melhor resposta
Delete - Dúvida

Pergunta
-
Respostas
-
Bom dia,Então será deletado de 100 em 100 clientes.A lentidão talvez seja por causa de alguma trigger. Verifique se a tabela possui alguma.Existe o TRUNCATE TABLE, mas CUIDADO, ele apaga TODOS os registros da tabela, de forma bem mais eficaz comparado com o delete sem where.Dependendo da quantidade de registros que estão sendo excluídos pode apagar por partes, usando o comando TOP.Ex.:Tabela Cliente (cod int, nome varchar(50), idade smallint)Quero apagar todos os Clientes que tem idade inferior a 30.Code Snippetdelete from clientewhere idade < 30Porém são milhares de clientes e está demorando bastante. É só fazer parte a parte..Code Snippetdelete from Clientewhere
cod in (select top 100 cod from cliente
where idade < 30
order by cod )
Espero ter ajudado.
Todas as Respostas
-
Bom dia,Então será deletado de 100 em 100 clientes.A lentidão talvez seja por causa de alguma trigger. Verifique se a tabela possui alguma.Existe o TRUNCATE TABLE, mas CUIDADO, ele apaga TODOS os registros da tabela, de forma bem mais eficaz comparado com o delete sem where.Dependendo da quantidade de registros que estão sendo excluídos pode apagar por partes, usando o comando TOP.Ex.:Tabela Cliente (cod int, nome varchar(50), idade smallint)Quero apagar todos os Clientes que tem idade inferior a 30.Code Snippetdelete from clientewhere idade < 30Porém são milhares de clientes e está demorando bastante. É só fazer parte a parte..Code Snippetdelete from Clientewhere
cod in (select top 100 cod from cliente
where idade < 30
order by cod )
Espero ter ajudado.
-
A demora pode ser devido a foreign keys, verifique no plano de execução de seu delete se ele está fazendo apenas o delete ou se ele está validando várias outras tabelas dependentes dos dados que você está excluindo...
Escrevi falando sobre DELETE em um post no meu blog, talvez possa ser utíl para você
http://fabianosqlserver.spaces.live.com/Blog/cns!52EFF7477E74CAA6!250.entry -
Olá Daniel,
Gostaria de saber o seguinte:
- Quantos registros estão sendo deletados ?
- A tabela que vai sofrer o DELETE passa sua PK para outras tabelas ?
- O que é "demorar muito" ?
- A tabela possuir triggers (utilize o comando sp_helptrigger 'Nome da Tabela')
Com base nisso podemos começar a discutir o seu problema.
[ ]s,
Gustavo