MELHORANDO CONSULTA SQL - ACCESS

MARCELO.TREZE 12/01/2012 19:30:51
#393118
Bons links SAMUKA

comece a pensar em criar procedures, assim fica a cargo do banco o desenpenho, ficando o computador livre deste processamento, isto aumenta muito o desempenho.
só não me pergunte como criar esta procedure.

LLAIA 13/01/2012 11:09:50
#393158
As dicas dos colegas acho que já são suficientes.

PS. Com Jet Database (Access) não existe processamento no servidor. Se vc precisa de 10 registros entre 500.000, os 500.000 registros será carregados na estação onde ocorrerá a filtragem e com wireless [Ô]parece[Ô] que o desempenho piora exponencialmente.

Depois que estudei um pouco sobre protocolos de redes sem fio e a montanha de dificuldades que precisam ser superadas para coisa acontecer, e a experiência que tive, não sinto seguro em usar Access em redes sem fio.
GUIMORAES 13/01/2012 11:23:35
#393161
Bom, Criar indices na tabela ajuda muito.
Criação de procedures, como já mencionado, irá aumentar muito o desempenho da consulta.
Quando à rede Wireless, sugiro que não utilize para comunicação com banco de dados, pois o desenpenho despenca, isto não acontece somente com o access, mas tambem com firebird(uma pequena queda no desempenho) e outros bancos de dados.

Abraços
NETMANIA 13/01/2012 14:58:14
#393187
Se você tem uma rede sem fio, fuja imediatamente do Access e mude para um gerenciador de banco de dados como SQL Server, Oracle, MySQL, Firebird. Estes foram projetados para trabalhar com requisições simuntâneas, transações. O Access funciona com transação, sim, mas com um fator limitante, ele não foi projetado para um grande volume de dados, nem tão pouco grande quantidade de requisições, sendo que com o tempo ele poderá começar apresentar problemas de integridade e chegar ao ponto do banco conromper sozinho (como já tive problemas no passado em uma empresa que trabalhe).

Completando a informação que o LLAIA, o Access tem um problema sério que este envia uma [Ô]cópia[Ô] do banco pela rede, devido a esta característica única, degradando a velocidade das aplicações quando estas crescem muito.

Resumindo: aposente o Access quanto é tempo e mude para um SGDB (Sistema Gerenciador de Banco de Dados) quanto é tempo, antes que este banco começe a te dar dor de cabeças por quer ele está perdendo dados ou o por que o banco inteiro ficou conrompido.
SAMUKA 13/01/2012 15:02:52
#393188
MAICONJG, testa essa Consulta pra ver se melhora a performance.

PS. Não tenho certeza que está correta a prioridade, pois foi no [Ô]zóio[Ô] ....

  
SELECT TOP 20 Tele_Capa.data, Tele_capa.codigo_tele, Tele.codigo_produto, desc_longa, quantidade, valor_tele, apelido, motivo
FROM (((Tele LEFT Join tele_Capa ON Tele.codigo_tele = tele_Capa.codigo_tele)
LEFT JOIN Funcionarios ON Tele_Capa.codigo_Funcionario = Funcionarios.codigo_Funcionario)
LEFT JOIN Produtos ON Tele.codigo_produto = Produtos.codigo)
ORDER BY Tele.codigo_tele DESC
MICHAELL 13/01/2012 16:07:20
#393196
engraçado é o seguinte:

se eu faço a consulta do terminal, leva mais ou menos 15 segundos..

se eu faco essa mesma consulta (mas que retorne com outros dados) demora só uns 3 segundos... ou seja, na segunda consulta fica mais rapido, mesmo sendo outros resultados.

alguem sabe porque?

como posso fazer uma procedure no access?
SAMUKA 13/01/2012 17:00:44
#393199
Faltou o WHERE


SELECT TOP 20 Tele_Capa.data, Tele_capa.codigo_tele, Tele.codigo_produto, desc_longa, quantidade, valor_tele, apelido, motivo
FROM (((Tele LEFT Join tele_Capa ON Tele.codigo_tele = tele_Capa.codigo_tele)
LEFT JOIN Funcionarios ON Tele_Capa.codigo_Funcionario = Funcionarios.codigo_Funcionario)
LEFT JOIN Produtos ON Tele.codigo_produto = Produtos.codigo)
WHERE Tele_capa.codigo_cliente = [CODIGO_DO_CLIENTE]
ORDER BY Tele.codigo_tele DESC
VALDEMIRLUZ 13/01/2012 22:00:59
#393219
Sugiro alterar o relacionamento entre as tabelas, conforme abaixo:

SELECT top 20 Tele_Capa.data, Tele_capa.codigo_tele, Tele.codigo_produto, desc_longa, quantidade, valor_tele, apelido, motivo
FROM ((Tele
INNER JOIN Produtos ON Tele.codigo_produto = Produtos.codigo)
INNER JOIN tele_Capa ON Tele.codigo_tele = tele_Capa.codigo_tele)
LEFT JOIN Funcionarios ON Tele_Capa.codigo_Funcionario=Funcionarios.codigo_Funcionario
WHERE Tele_capa.codigo_cliente = [Ô] & txtCodCliente & [Ô] [Ô]
ORDER BY Tele.codigo_tele desc [Ô])
LLAIA 14/01/2012 16:48:35
#393239
Citação:

:
engraçado é o seguinte:

se eu faço a consulta do terminal, leva mais ou menos 15 segundos..

se eu faco essa mesma consulta (mas que retorne com outros dados) demora só uns 3 segundos... ou seja, na segunda consulta fica mais rapido, mesmo sendo outros resultados.

alguem sabe porque?

como posso fazer uma procedure no access?



Não tenho certeza, mas possivelmente existe um sistema com cache nas bibliotecas de acesso. Seria uma boa descobrir como é gerenciado o cache caso ele exista.
Página 2 de 3 [24 registro(s)]
Tópico encerrado , respostas não são mais permitidas