| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Sex Out 05, 2018 1:03 pm Assunto: [resolvido] Performance Mestre Detalhe |
|
|
Amigos, uma pequena duvida neste cenário.
Tabela PEDIDOS é a mestre. Tabela ITENS é a detalhe
Essa tabela ITENS tem cerca de 10 mil registros e tende a crescer 100 registros por dia.
Ao acessar a tela, faço um select de todos os PEDIDOS do dia de hoje, o que me resulta em no maximo 60 registros.
A dúvida é como funciona essa relação mestre detalhe. O firebird entende que vai ter que varrer toda tabela ITENS cada vez que eu clicar em um PEDIDO?
Editado pela última vez por renanbg em Qua Out 10, 2018 7:42 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sáb Out 06, 2018 1:22 pm Assunto: |
|
|
Boa tarde,
Acho que vai depender muito da forma como você vai programar, principalmente de como vai estar a sua query utilizada para retornar os itens do banco de dados, se essa query vai ter um filtro para retornar somente os itens de determinado pedido ou não.
No banco de dados em si, acho que seria importante a tabela de itens ter uma foreign key referenciando a primary key da tabela de pedidos, pois com essa FK o BD não precisará varrer a tabela inteira para retornar somente os itens de um pedido.
Espero que ajude
_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos-residencial-casa |
|
| Voltar ao Topo |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Seg Out 08, 2018 4:49 pm Assunto: |
|
|
Boa tarde imex.
Obrigado pelo retorno.
Sim, tenho uma chave estrangeira na tabela itens que aponta para a chave primaria da tabela pedidos.
E o select é basicamente:
| Código: | | SELECT DATA, PEDIDO, CLIENTE, VALOR FROM PEDIDOS WHERE DATA =:HOJE |
Posso ficar despreocupado? |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Out 08, 2018 5:37 pm Assunto: |
|
|
Boa tarde,
Em relação a essa query sim, mas como está a query para retornar os itens? Ela filtra por pedido? |
|
| Voltar ao Topo |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Seg Out 08, 2018 7:51 pm Assunto: |
|
|
ahh, sim...
Na query filho(itens), tenho o seguinte
| Código: | | Select * From ITENS where COD_PEDIDO = :codigo |
|
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Out 08, 2018 8:36 pm Assunto: |
|
|
Essa query de itens retorna somente os itens de um pedido e como existe a FK o BD não terá que varrer toda a tabela para retorna-los.
Voltando a query de pedidos, se ela não tiver um índice com o campo Data o BD provavelmente varrerá a tabela inteira para retornar os pedidos do dia, mas a princípio não acho necessária a criação desse índice, que inclusive pode ser criado posteriormente caso a performance venha a se tornar um problema.
Espero que ajude |
|
| Voltar ao Topo |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Ter Out 09, 2018 10:50 am Assunto: |
|
|
Bom dia imex.
Fico mais tranquilo.
Sobre a tabela pedidos, não tem indice.
Será que seria melhor criar esse indice?
Aproveitando o gancho. Na pesquisa de clientes, seria interessante criar um indice no campo nome?]
a query está assim:
| Código: | | select * from clientes where nome like .... |
|
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Out 09, 2018 6:20 pm Assunto: |
|
|
Boa tarde,
Um índice pode ajudar na performance dependendo dos campos que fazem parte do índice e dos filtros e ordenação existentes na query, mas a existência do índice também consome recursos do BD para manutenção do mesmo quando registros são inseridos, alterados e excluídos.
Nesse caso da tabela de clientes onde imagino que a maior parte das pesquisas será por nome e eventualmente a ordenação também, acredito que o índice seria interassante.
Nos outros caso teria que verificar os demais filtros e etc, mas se está funcionando bem sem os índices e como eles podem ser criados depois sem que seja necessário fazer alterações na aplicação, acho que você pode deixar como está e eventualmente cria-los no futuro. |
|
| Voltar ao Topo |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Qua Out 10, 2018 7:41 am Assunto: |
|
|
De fato o banco ainda é pequeno e roda em apenas 2 estações.
De momento não foi sentido o peso em pesquisas.
Obrigado pelas dicas.
Abraço. |
|
| Voltar ao Topo |
|
 |
|