Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TeRRaBR

Sintaxe Delete

Recommended Posts

Bom dia,

Primeiramente irei explicar o ocorrido.

Existe uma tabela em meu banco com mais de 1 milhão de registros..

Preciso efetuar um delete para apagar os registros mais antigos..

Porém, ao rodar o delete, a demora é absurda.. e não temos todo esse tempo, infelizmente.

Gostaria de saber como declarar para o delete efetuar a rotina por um certo index existente, assim deixando mais rapido.

 

Agradeço,

 

até

 

Galera.. Se alguém naõ entender.. por favor questione.. pois estou mesmo precisando ! >.<

Não consigo achar nada relacionado...

 

Valeu!

 

 

 

 

Certo.. vou tentar explicar melhor..rsrs

 

a minha duvida é como eu utilizo INDEX em um DELETE.. Pois o meu problema é o tempo que leva para rodar o script.. e sei que com index, o processo é mais rapido.. porém não sei como utilizar index no delete(sintaxe). Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procure por Create Index

 

eu ja tenho as index criadas.. porém só preciso saber como informala na sintaxe..

Exemplo:

 

delete from nome_tabela where `DATA` < '2009-01-01';

 

eu quero que ao efetuar o delete, ele busque direto pelo campo DATA, para não precisar ler todo o banco, apenas o banco que eu declarar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

basta você criar o índice para o campo DATA que o mysql vai usá-lo para identificar os registros a serem deletados...

 

caso ainda continue lento..

e se sua tabela tiver uma PK com auto incremento..

experimente pegar o Id (de acordo com a data) e deletar os registros com Id igual ou menor que o determinado registro..

mas teste isso, não sei se vai ajudar muito

Compartilhar este post


Link para o post
Compartilhar em outros sites

basta você criar o índice para o campo DATA que o mysql vai usá-lo para identificar os registros a serem deletados...

 

caso ainda continue lento..

e se sua tabela tiver uma PK com auto incremento..

experimente pegar o Id (de acordo com a data) e deletar os registros com Id igual ou menor que o determinado registro..

mas teste isso, não sei se vai ajudar muito

 

Pois é.. Também pensei nisso.. Porém, a base é uma m*****.. to reestruturando ela!! Os ID's é tudo fora de ordem, não sei como acontece uma coisa dessa..

 

 

http://dev.mysql.com/doc/refman/5.0/en/index-hints.html

 

 

mas normalmente você nao consegue aplicar ganhar do banco em otimizaçao de uso de indice

 

Vou ver o que posso fazer.. O boss aqui falou pra usar um indíce para filtrar e ficar mais rápido (na tabela temos registros desde 2004, levando mais de 3 horas para deletar CADA ANO! ) porém, nao estou sabendo a sintaxe!

 

Vou tentar e qualquer coisa posto aqui..

Enquando isso, se alguém mais tiver um palpite.. por favor.. eu aceito ! rsrs

 

Valeu galera!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu amigo, index serve para encontrar as linhas dentro da tabela, para deletar eh necessario uma manifestacao fisica do banco de dados dentro do HD, ou seja, escrever no HD q as linhas foram deletadas, dependendo do tamanho das linhas e a qtde delas isso realmente vai demorar mto tempo, da mesma forma que copiar um arquivo mto grande de um lado ao outro do HD demora horas as vezes, ou seja seu gargalo pode estar no HD em si.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.