Lenta na Execução
Caro Amigos
Tenho uma tabela que chamo de Tb_LtSaida e ela possui os seguintes campos:
NrContrLote, Data, CdFunc, MolEntr, CdTransp , LtOrigem, TpReceb, FormaPag, NmCli, DDD, Fone, Situacao, DtImporte
o problema:
ela tem 68 mil registros e demora 13 segundos para executar
O que posso fazer para ela melhorar a performance?
nao tenho nem indice e nem primary Key, onde criar e como
o Campo unico eh o NrContrLote
Abraços
Tenho uma tabela que chamo de Tb_LtSaida e ela possui os seguintes campos:
NrContrLote, Data, CdFunc, MolEntr, CdTransp , LtOrigem, TpReceb, FormaPag, NmCli, DDD, Fone, Situacao, DtImporte
o problema:
ela tem 68 mil registros e demora 13 segundos para executar
O que posso fazer para ela melhorar a performance?
nao tenho nem indice e nem primary Key, onde criar e como
o Campo unico eh o NrContrLote
Abraços
Tremonti
Curtidas 0
Respostas
Pezzin
14/10/2005
Que banco de dados vc usa ?
Procure criar um índice ou chave para seu campo NrContrLote
Procure criar um índice ou chave para seu campo NrContrLote
GOSTEI 0
Pezzin
14/10/2005
Vai depender tb dá sua conexão e dos componentes que está usando.
GOSTEI 0
Tremonti
14/10/2005
Uso a Tranquera do BDE
Mas como criaria, pode me ajudar?
Mas como criaria, pode me ajudar?
GOSTEI 0
Olimpio
14/10/2005
qual banco de dados usa???
GOSTEI 0
Dedi
14/10/2005
Amigo,
Para criar uma chave primaria
pelo delphi mesmo vá em tools/database desktop
no database desktop vá em Toosl/Utilities/restructure
escolha a tabela
na estrutura da tabela marque o campo key na linha 1 onde esta o campo ´NrContrLote´ clique em save e pronto.
Obs:Faça um backup da tabela antes de ini ciar este procedimento.
Para criar uma chave primaria
pelo delphi mesmo vá em tools/database desktop
no database desktop vá em Toosl/Utilities/restructure
escolha a tabela
na estrutura da tabela marque o campo key na linha 1 onde esta o campo ´NrContrLote´ clique em save e pronto.
Obs:Faça um backup da tabela antes de ini ciar este procedimento.
GOSTEI 0
Tremonti
14/10/2005
Uso Sql Server
Pelo Delphi nao
Pelo SQl Mesmo
Pelo Delphi nao
Pelo SQl Mesmo
GOSTEI 0
Dedi
14/10/2005
não me atentei para qual banco vc estaria usando!!! imaginei ser uma tabela paradox.
a informação acima aplica se a tabelas tipo paradox.
a informação acima aplica se a tabelas tipo paradox.
GOSTEI 0
Tremonti
14/10/2005
Alguem tem alguma idéia?
GOSTEI 0
Lucianobarreto
14/10/2005
Por motivos de segurança tente o seguinte.
Crie uma tabela auxiliar com a mesma estrutura da Tb_LtSaida, porém já com o indice, como uma chave primaria por exemplo. Recrie a tabela Tb_LtSaida colocando o indice, e transfira os dados da tabela auxiliar para a tabela Tb_LtSaida. Ou entao você pode tentar alterar a tabela colocando o indice, o que eu acho que não vai rolar depois que você ja tem muitos dados nela, mas, se quiser tentar seria algo como
CREATE INDEX idx_cod ON tabela (campo)
ou
CREATE UNIQUE INDEX idx_cod ON tabela (campo) se tiver certeza que o valor nao irá se repetir.
Eu testei aqui no postgresql em uma tabela com dados e deu certo sem perder nada, mas na duvida crie um backup....
até mais
Crie uma tabela auxiliar com a mesma estrutura da Tb_LtSaida, porém já com o indice, como uma chave primaria por exemplo. Recrie a tabela Tb_LtSaida colocando o indice, e transfira os dados da tabela auxiliar para a tabela Tb_LtSaida. Ou entao você pode tentar alterar a tabela colocando o indice, o que eu acho que não vai rolar depois que você ja tem muitos dados nela, mas, se quiser tentar seria algo como
CREATE INDEX idx_cod ON tabela (campo)
ou
CREATE UNIQUE INDEX idx_cod ON tabela (campo) se tiver certeza que o valor nao irá se repetir.
Eu testei aqui no postgresql em uma tabela com dados e deu certo sem perder nada, mas na duvida crie um backup....
até mais
GOSTEI 0