ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Melhorar performance select
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jul 06, 2021 8:51 am    Assunto: Melhorar performance select Responder com Citação

Fiz este select aqui
Código:
   SELECT
            endereco.endereco_logradouro,
            endereco.endereco_complemento,
            bairro.bairro_descricao bairrodescricao,
            cidade.cidade_descricao as cidadedescricao,
            uf.uf_sigla as ufsigla,
            endereco.endereco_cep as cep
       FROM endereco
 INNER JOIN cidade on cidade.cidade_codigo = endereco.cidade_codigo
 INNER JOIN bairro on bairro.bairro_codigo = endereco.bairro_codigo
 INNER JOIN uf on uf.uf_codigo = endereco.uf_codigo                 
  WHERE  (
          UPPER(endereco.endereco_logradouro || cidade.cidade_descricao ||
          bairro.bairro_descricao || uf.uf_sigla || uf.uf_descricao) LIKE :PBUSCA_CEP

          )


Mais analizando a performance vi que nas tabelas
ENDERECO, BAIRRO, CIDADE passaram 1.094.578 vezes em cada um deles. E 27 vezes na tabela UF (Sem index nessa ultima)

Sendo que essa quantidade está apenas em ENDERECO
BAIRRO tem 55.449
CIDADE tem 10.894
Na minha tabela.

Como seria para melhorar o tempo de busca visto que acho que não é necessários passar todos os 1.094.578 dados do endereço em cada um deles.

Uso firebird 2.5


Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jul 06, 2021 10:26 am    Assunto: Responder com Citação

Bom dia,

Não sei se vai fazer diferença, mas experimente separar os filtros para ver se melhora:

Código:
WHERE
    UPPER(uf.uf_sigla) LIKE :PBUSCA_CEP OR
    UPPER(uf.uf_descricao) LIKE :PBUSCA_CEP OR
    UPPER(cidade.cidade_descricao) LIKE :PBUSCA_CEP OR
    UPPER(bairro.bairro_descricao) LIKE :PBUSCA_CEP OR
    UPPER(endereco.endereco_logradouro) LIKE :PBUSCA_CEP


E experimente também inverter a ordem das tabelas (se possível) no From e Joins, começando a partir da tabela Uf:

Código:
FROM uf
INNER JOIN cidade on cidade.uf_codigo = uf.uf_codigo
INNER JOIN bairro on bairro.cidade_codigo = cidade.cidade_codigo
INNER JOIN endereco on endereco.bairro_codigo = bairro.bairro_codigo


Espero que ajude


Editado pela última vez por imex em Dom Out 01, 2023 5:45 pm, num total de 2 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jul 06, 2021 10:48 am    Assunto: Responder com Citação

imex escreveu:
Bom dia,

Não sei se vai fazer diferença, mas experimente separar os filtros para ver se melhora:

Código:
WHERE
    UPPER(uf.uf_sigla) LIKE :PBUSCA_CEP OR
    UPPER(uf.uf_descricao) LIKE :PBUSCA_CEP OR
    UPPER(cidade.cidade_descricao) LIKE :PBUSCA_CEP OR
    UPPER(bairro.bairro_descricao) LIKE :PBUSCA_CEP OR
    UPPER(endereco.endereco_logradouro) LIKE :PBUSCA_CEP


E experimente também inverter a ordem das tabelas (se possível) no From e Joins, começando a partir da tabela Uf:

Código:
FROM uf
INNER JOIN cidade on cidade.uf_codigo = uf.uf_codigo
INNER JOIN bairro on bairro.cidade_codigo = cidade.cidade_codigo
INNER JOIN endereco on endereco.bairro_codigo = bairro.bairro_codigo


Espero que ajude


Bom dia

Assim da erro
Código:
Arithmetic exception, numeric overflow, or string truncation. string rigth truncation


Código:
 SELECT
            endereco.endereco_logradouro,
            endereco.endereco_complemento,
            bairro.bairro_descricao bairrodescricao,
            cidade.cidade_descricao as cidadedescricao,
            uf.uf_sigla as ufsigla,
            endereco.endereco_cep as cep
            FROM uf
INNER JOIN cidade on cidade.uf_codigo = uf.uf_codigo
INNER JOIN bairro on bairro.cidade_codigo = cidade.cidade_codigo
INNER JOIN endereco on endereco.bairro_codigo = bairro.bairro_codigo
WHERE
    UPPER(uf.uf_sigla) LIKE :PBUSCA_CEP OR
    UPPER(uf.uf_descricao) LIKE :PBUSCA_CEP OR
    UPPER(cidade.cidade_descricao) LIKE :PBUSCA_CEP OR
    UPPER(bairro.bairro_descricao) LIKE :PBUSCA_CEP OR
    UPPER(endereco.endereco_logradouro) LIKE :PBUSCA_CEP

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jul 06, 2021 10:54 am    Assunto: Responder com Citação

desta forma aqui
Código:
     SELECT
            endereco.endereco_logradouro,
            endereco.endereco_complemento,
            bairro.bairro_descricao bairrodescricao,
            cidade.cidade_descricao as cidadedescricao,
            uf.uf_sigla as ufsigla,
            endereco.endereco_cep as cep
            FROM uf
INNER JOIN cidade on cidade.uf_codigo = uf.uf_codigo
INNER JOIN bairro on bairro.cidade_codigo = cidade.cidade_codigo
INNER JOIN endereco on endereco.bairro_codigo = bairro.bairro_codigo
--WHERE
--    UPPER(uf.uf_sigla) LIKE :PBUSCA_CEP OR
--    UPPER(uf.uf_descricao) LIKE :PBUSCA_CEP OR
--    UPPER(cidade.cidade_descricao) LIKE :PBUSCA_CEP OR
--    UPPER(bairro.bairro_descricao) LIKE :PBUSCA_CEP OR
--    UPPER(endereco.endereco_logradouro) LIKE :PBUSCA_CEP

  WHERE  (
          UPPER(endereco.endereco_logradouro
              || cidade.cidade_descricao
              || bairro.bairro_descricao
              ||  uf.uf_sigla
              ||  uf.uf_descricao) LIKE :PBUSCA_CEP
          )


Até melhorou um pouco por trazer da forma correta cada passada de campos nas tabelas, mais ainda esta um pouco demorado
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jul 06, 2021 11:06 am    Assunto: Responder com Citação

Outra coisa que percebi mImex é usando um cast

Código:
WHERE
    UPPER(cast(uf.uf_sigla as varchar (255) character set WIN1252)) LIKE :PBUSCA_CEP OR
    UPPER(cast(uf.uf_descricao as varchar (255) character set WIN1252)) LIKE :PBUSCA_CEP OR
    UPPER(cast(cidade.cidade_descricao as varchar (255) character set WIN1252)) LIKE :PBUSCA_CEP OR
    UPPER(cast(bairro.bairro_descricao as varchar (255) character set WIN1252)) LIKE :PBUSCA_CEP OR
    UPPER(cast(endereco.endereco_logradouro as varchar (255) character set WIN1252)) LIKE :PBUSCA_CEP


Não causa erro, mais também o mesmo filtro de busca não trouxe o resultado

No caso fiz o testes
Código:
--WHERE
--    UPPER(cast(endereco.endereco_logradouro as varchar (255) character set WIN1252)) LIKE :PBUSCA_CEP OR
--    UPPER(cast(cidade.cidade_descricao as varchar (255) character set WIN1252)) LIKE :PBUSCA_CEP OR
--    UPPER(cast(bairro.bairro_descricao as varchar (255) character set WIN1252)) LIKE :PBUSCA_CEP OR
--    UPPER(cast(uf.uf_sigla as varchar (255) character set WIN1252)) LIKE :PBUSCA_CEP OR
--    UPPER(cast(uf.uf_descricao as varchar (255) character set WIN1252)) LIKE :PBUSCA_CEP

  WHERE  (
          UPPER(endereco.endereco_logradouro
              || cidade.cidade_descricao
              || bairro.bairro_descricao
              ||  uf.uf_sigla
              ||  uf.uf_descricao) LIKE :PBUSCA_CEP
          )


Where com OR sem concatenar retornou nenhum valor e ficou o execute time em 4s 203ms, já o de baixo concatenado retornou em 2s 672ms e com alguns valores

Acho que esse deve ser o maximo que consegue executar então.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jul 06, 2021 1:44 pm    Assunto: Responder com Citação

Não entendo como quando pesquiso na base do correios vem instantâneio?

https://buscacepinter.correios.com.br/app/endereco/index.php

O que elels usam para vir tão rápido e no meu demora tanto assim?

Será que tem uma forma de melhorar isso?

Ainda está muito ruim desta forma
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Ter Jul 06, 2021 2:07 pm    Assunto: Responder com Citação

Adriano todas estas junções da cláusula From estão com chaves?
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jul 06, 2021 2:38 pm    Assunto: Responder com Citação

pestana escreveu:
Adriano todas estas junções da cláusula From estão com chaves?


Sim Pestana todas são dependentes FK dos seus filhos aqui
Código:
INNER JOIN cidade on cidade.uf_codigo = uf.uf_codigo
INNER JOIN bairro on bairro.cidade_codigo = cidade.cidade_codigo
INNER JOIN endereco on endereco.bairro_codigo = bairro.bairro_codigo

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jul 06, 2021 4:36 pm    Assunto: Responder com Citação

Estava vendo aqui algo que me deixou curioso

Se eu digitar no select %RUA%MORRETES%
RETORNOU 19 REGISTROS DA TABELA E ABAIXO
Citação:
O performance analysis do ibexpert retornou
1.104.349 - TABELA ENDERECOS
55.449 - TABELA BAIRROS
10.894 - TABELA CIDADES


Citação:

------ Performance info ------
Prepare time = 16ms
Execute time = 2s 703ms
Avg fetch time = 193,07 ms
Current memory = 9.730.792
Max memory = 9.877.448
Memory buffers = 2.048
Reads from disk to cache = 35.472
Writes from cache to disk = 1
Fetches from cache = 2.610.913


****************************************************
Se eu digitar no select %RUA%CURITIBA%
RETORNOU 1000 REGISTROS DA TABELA (QUE LIMITEI) E ABAIXO
Citação:
O performance analysis do ibexpert retornou
468.821 - TABELA ENDERECOS
21.341 - TABELA BAIRROS
5.939 - TABELA CIDADES


Citação:
------ Performance info ------
Prepare time = 0ms
Execute time = 532ms
Avg fetch time = 38,00 ms
Current memory = 9.754.880
Max memory = 9.877.448
Memory buffers = 2.048
Reads from disk to cache = 15.711
Writes from cache to disk = 0
Fetches from cache = 1.109.033


Porque a que tem mais registros se comportou mais rápido seu retorno e o performance analysis ficou com menos passada?
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jul 06, 2021 4:48 pm    Assunto: Responder com Citação

Acho que você tem que tentar fazer uns testes sem concatenar os campos para filtrar, e procurando eliminar as funções que não forem necessárias. No caso da sigla da UF por exemplo, acho que o Upper, Cast e o Like não são necessários, podendo ser utilizado um simples "igual", inclusive desconfio que o erro que ocorreu no início foi por causa desse campo da sigla.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jul 06, 2021 5:01 pm    Assunto: Responder com Citação

Segue uma outra sugestão para testes onde seria utilizado um Select separado para deixar cada tabela no From e somente com os filtros dos campos dessa tabela. Ex:

Código:
   SELECT
            endereco.endereco_logradouro,
            endereco.endereco_complemento,
            bairro.bairro_descricao bairrodescricao,
            cidade.cidade_descricao as cidadedescricao,
            uf.uf_sigla as ufsigla,
            endereco.endereco_cep as cep
       FROM endereco
 INNER JOIN cidade on cidade.cidade_codigo = endereco.cidade_codigo
 INNER JOIN bairro on bairro.bairro_codigo = endereco.bairro_codigo
 INNER JOIN uf on uf.uf_codigo = endereco.uf_codigo                 
 WHERE
     UPPER(endereco.endereco_logradouro) LIKE :PBUSCA_CEP

union

 SELECT
            endereco.endereco_logradouro,
            endereco.endereco_complemento,
            bairro.bairro_descricao bairrodescricao,
            cidade.cidade_descricao as cidadedescricao,
            uf.uf_sigla as ufsigla,
            endereco.endereco_cep as cep
       FROM uf
INNER JOIN cidade on cidade.uf_codigo = uf.uf_codigo
INNER JOIN bairro on bairro.cidade_codigo = cidade.cidade_codigo
INNER JOIN endereco on endereco.bairro_codigo = bairro.bairro_codigo
WHERE
    uf.uf_sigla = :PBUSCA_CEP OR
    UPPER(uf.uf_descricao) LIKE :PBUSCA_CEP


No exemplo acima teria que ser adicionado um Select para a tabela Bairro e outro para a tabela Cidade. Acho que dessa forma não será feita a passagem pelas tabelas dos Joins quando o registro da tabela do From não passar pelo filtro, talvez melhore o desempenho.

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jul 06, 2021 6:05 pm    Assunto: Responder com Citação

Imex precisei colocar um cast ainda

Código:
  SELECT
            endereco.endereco_logradouro,
            endereco.endereco_complemento,
            bairro.bairro_descricao bairrodescricao,
            cidade.cidade_descricao as cidadedescricao,
            uf.uf_sigla as ufsigla,
            endereco.endereco_cep as cep
       FROM endereco
 INNER JOIN cidade on cidade.cidade_codigo = endereco.cidade_codigo
 INNER JOIN bairro on bairro.bairro_codigo = endereco.bairro_codigo
 INNER JOIN uf on uf.uf_codigo = endereco.uf_codigo                 
 WHERE
     UPPER(endereco.endereco_logradouro) LIKE :PBUSCA_CEP

union

 SELECT
            endereco.endereco_logradouro,
            endereco.endereco_complemento,
            bairro.bairro_descricao bairrodescricao,
            cidade.cidade_descricao as cidadedescricao,
            uf.uf_sigla as ufsigla,
            endereco.endereco_cep as cep
       FROM uf
INNER JOIN cidade on cidade.uf_codigo = uf.uf_codigo
INNER JOIN bairro on bairro.cidade_codigo = cidade.cidade_codigo
INNER JOIN endereco on endereco.bairro_codigo = bairro.bairro_codigo
WHERE
    uf.uf_sigla = cast(:PBUSCA_CEP as varchar(72)) OR
    UPPER(uf.uf_descricao) LIKE :PBUSCA_CEP


Mais não retornou nada quando passei assim no parametro
%RUA%MORRETES%PARANÁ%

Se passar no parametro %RUA%MORRETES% retorna os registros, mais de todos os estados.

Fiz mais um union com a tabela cidades, mais também não da retorno se eu colocar assim no parametro
%RUA%MORRETES%CURITIBA%


Código:
SELECT
            endereco.endereco_logradouro,
            endereco.endereco_complemento,
            bairro.bairro_descricao bairrodescricao,
            cidade.cidade_descricao as cidadedescricao,
            uf.uf_sigla as ufsigla,
            endereco.endereco_cep as cep
       FROM endereco
 INNER JOIN cidade on cidade.cidade_codigo = endereco.cidade_codigo
 INNER JOIN bairro on bairro.bairro_codigo = endereco.bairro_codigo
 INNER JOIN uf on uf.uf_codigo = endereco.uf_codigo                 
 WHERE
     UPPER(endereco.endereco_logradouro) LIKE :PBUSCA_CEP

union

 SELECT
            endereco.endereco_logradouro,
            endereco.endereco_complemento,
            bairro.bairro_descricao bairrodescricao,
            cidade.cidade_descricao as cidadedescricao,
            uf.uf_sigla as ufsigla,
            endereco.endereco_cep as cep
       FROM uf
INNER JOIN cidade on cidade.uf_codigo = uf.uf_codigo
INNER JOIN bairro on bairro.cidade_codigo = cidade.cidade_codigo
INNER JOIN endereco on endereco.bairro_codigo = bairro.bairro_codigo
WHERE
    uf.uf_sigla = cast(:PBUSCA_CEP as varchar(72)) OR
    UPPER(uf.uf_descricao) LIKE :PBUSCA_CEP

union

  SELECT
            endereco.endereco_logradouro,
            endereco.endereco_complemento,
            bairro.bairro_descricao bairrodescricao,
            cidade.cidade_descricao as cidadedescricao,
            uf.uf_sigla as ufsigla,
            endereco.endereco_cep as cep
       FROM cidade
 INNER JOIN endereco on endereco.uf_codigo = cidade.uf_codigo
 INNER JOIN bairro on bairro.cidade_codigo = cidade.cidade_codigo
 INNER JOIN uf on uf.uf_codigo = cidade.uf_codigo
 WHERE     
     UPPER(cidade.cidade_descricao) LIKE :PBUSCA_CEP

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Jul 07, 2021 9:28 am    Assunto: Responder com Citação

Olhando melhor os seus exemplos, acho que tem que concatenar mesmo para o filtro funcionar. Nesse caso talvez uma alternativa seja adicionar um campo na tabela Endereco para gravar os valores concatenados e de preferência com uma collation case insensitive ou com o conteúdo todo em maiúsculas ou minúsculas para evitar a função Upper também.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Jul 07, 2021 10:07 am    Assunto: Responder com Citação

imex escreveu:
Olhando melhor os seus exemplos, acho que tem que concatenar mesmo para o filtro funcionar. Nesse caso talvez uma alternativa seja adicionar um campo na tabela Endereco para gravar os valores concatenados e de preferência com uma collation case insensitive ou com o conteúdo todo em maiúsculas ou minúsculas para evitar a função Upper também.
Bom dia Imex, desculpe não entendi o que quis dizer ai. Como seria isso?
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Jul 07, 2021 2:14 pm    Assunto: Responder com Citação

Boa tarde,

A sugestão seria criar um campo na tabela Endereco para gravar o endereço completo, como por exemplo o valor retornado pelo trecho abaixo:

Código:
UPPER(endereco.endereco_logradouro
   || cidade.cidade_descricao
   || bairro.bairro_descricao
   || uf.uf_sigla
   || uf.uf_descricao)


Aí você poderia utilizar esse campo no filtro deixando a tabela Endereco no From, o que provavelmente vai evitar a passagem pelas tabelas do Join quando não for necessário, além de deixar de executar a função Upper e a concatenação:

Código:
WHERE endereco.endereco_completo like :BUSCA_CEP


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB