Ajuda em Update....
Boa tarde.
Pessoal sou iniciante em banco de dados, mas estou montando uma ferramenta em java, e preciso que ela tenha muita agilidade no processamento, logo, preciso de instruções perfeitas para comunicar com o banco.
A tarefa é a seguinte:
A programa lê um arquivo texto com +-65.000 linhas, e salva no banco, entretanto, toda vez que for encontrado o produto repetido, ele deverá acumular o dado ´quantidade´, e caso ainda não exista o dado, inserir-lo.
Consegui monta a seguinte instrução:
Primeiro consulta se o produto existe (SELECT), se existe, pega a quantidade armazenada e soma com a que está sendo importada (UPDATE), se não existir, insere normalmente.
Esta instrução está muito lenta, pois o banco já possui mais de 150.000 linhas, e mesmo com um indice não ajudou muito.
Alguém saberia uma instrução Update...mais objectiva?
Segue abaixo a simbologia do que eu fiz:
A=SELECT ProdEIndice, ProdEQuant FROM cadastro WHERE ProCod=1000
-----------------------------
SE (A=true), Então:
UPDATE cadastro SET ProdQuant = Anterior+Atual WHERE ProdCad
=100
SENÂO:
INSERT.....
-----------------------------
Pessoal sou iniciante em banco de dados, mas estou montando uma ferramenta em java, e preciso que ela tenha muita agilidade no processamento, logo, preciso de instruções perfeitas para comunicar com o banco.
A tarefa é a seguinte:
A programa lê um arquivo texto com +-65.000 linhas, e salva no banco, entretanto, toda vez que for encontrado o produto repetido, ele deverá acumular o dado ´quantidade´, e caso ainda não exista o dado, inserir-lo.
Consegui monta a seguinte instrução:
Primeiro consulta se o produto existe (SELECT), se existe, pega a quantidade armazenada e soma com a que está sendo importada (UPDATE), se não existir, insere normalmente.
Esta instrução está muito lenta, pois o banco já possui mais de 150.000 linhas, e mesmo com um indice não ajudou muito.
Alguém saberia uma instrução Update...mais objectiva?
Segue abaixo a simbologia do que eu fiz:
A=SELECT ProdEIndice, ProdEQuant FROM cadastro WHERE ProCod=1000
-----------------------------
SE (A=true), Então:
UPDATE cadastro SET ProdQuant = Anterior+Atual WHERE ProdCad
=100
SENÂO:
INSERT.....
-----------------------------
Andersonasp
Curtidas 0
Respostas
Wagnerbianchi
22/09/2006
Ola amigao,
Faca o seguinte teste em seu MySQL e tire suas conclusoes...
Crie uma tabela:
Em seguida, insira um valor:
Temos entao o seguinte cenario apos um SELECT:
+------------+
- numero -
+------------+
- 1 -
+------------+
OK? :wink:
Agora, vamos atualizar o valor do campo numero, idependente do valor que ja existe armazenado:
Apos rodar o update, fazendo um novo SELECT na tabela atualizada, termos o valor do campo numero = 2. Levando em conta que o campo tenha um valor maior ou igual a zero (0), ele sera afetado.
Qualquer duvida, continue postando.
Faca o seguinte teste em seu MySQL e tire suas conclusoes...
Crie uma tabela:
create table teste (numero int not null);
Em seguida, insira um valor:
insert into teste values (1);
Temos entao o seguinte cenario apos um SELECT:
+------------+
- numero -
+------------+
- 1 -
+------------+
OK? :wink:
Agora, vamos atualizar o valor do campo numero, idependente do valor que ja existe armazenado:
update teste set numero =numero+1;
Apos rodar o update, fazendo um novo SELECT na tabela atualizada, termos o valor do campo numero = 2. Levando em conta que o campo tenha um valor maior ou igual a zero (0), ele sera afetado.
Qualquer duvida, continue postando.
GOSTEI 0