• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

rfid

SQL 2000 muito lento

13 mensagens neste tópico

Viva,

Para trabalhar com o SQL 2000, uso o Query Analyzer para analisar resultados.

Coloquei lá esta expressão:

Select * From [Encomendas Asc] Where NumEnc = 9037

A tabela tem 804 mil registos

O que acontece é que demora quase 3 minutos a devolver os resultados.

Que sujestões apresentam para acelerar este processo?

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Precisas mesmo ver os dados de todas as colunas? É que isso atrasa um bocado...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

SQL 2000?

estás a falar do SQL Server 2000?

o problema pode ser do pc, o SQL Server é um pouco pesado (se bem que para demorar 3min tinha que ser bastante mau).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É provável que falte o index. E coloca-lo agora não é tarefa fácil, vas aterrar o server.

Procura um campo indexado que possas utilizar para obter o mesmo resultado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A tabela tem 80 colunas, mas apenas selecciono 4

Os campos que quero consultar não estão indexados, como devo fazer?

Uso a versão do SQL Server 2000

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a minha bd tinha o meu problemas , algumas tabelas recebem 20+ novos novas linhas adicionadas por dia.

Criei tabelas Historicas todos os dados sao transferidos  dos anos anteriores.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se colocares um índice, como já referido, vais notar uma melhoria significativa de performance, no entanto não acredito que o problema venha dai, em especial numa tabela com menos de 1000 registos, essa query devia retornar resultados em menos de 2 segundos.

Uma tabela com 80 colunas é um bom indicio de má performance, só costumo ver em ambientes empresariais "sérios" como bancos, seguradoras, etc. e raramente sobre SQL Server.

Além das 80 colunas, verifica a desfragmentação da tabela, é possível que ela esteja bastante desfragmentada.

Verifica se o Windows e o SQL Server não andam a trabalhar sobre stress, pouca RAM, pouco espaço em disco, muito acesso a disco sem razão aparente, outras aplicações a correr na mesma máquina (servidores ou anti-virus) que consomem muitos recursos.

Outra coisa, actualiza as estatísticas, pois estas têm um papel importantíssimo na performance.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deves ter lido mal:

804 mil registos

Sim, é verdade li mal... :/

Fazendo 804000 em 3 minutos Isso quer dizer que o SQL Server está a recuperar 4466 registos por segundo, o que, embora não sendo rápido, é considerado aceitável.

De qualquer forma, e sem conhecer a arquitectura em que está montado, podes investigar os pontos que indiquei acima, uma vez que os mesmos continuam a ser válidos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

com um indice conjunto entre a chave primária da tabela em questão mais a coluna que estás a usar para filtrar os resultados (a que está no WHERE), deves conseguir resultados em milésimos de segundo

a num ser que a máquina seja mui mui lenta e com pouca RAM.

o "motor" do SQL Server vai fazer a pesquisa no index (index full scan) e depois com os resultados obtidos nessa consulta já vai directamente à tabela ler as colunas que colocaste no select por acesso directo pela chave primária. (table access by index rowid)

inté!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora