Criar uma tabela temporária através de SQL com Delphi
Saudações gente,
gostaria de saber como faço para criar uma tabela temporária a partir de um sql embutido no Delphi. Eu já tenho o sql pronto (inclusive já testei no Access o sql e funcionou) só que eu queria que essa tabela ficasse alocada na memória apenas para fazer algumas consultas nela e após realizar estas consultas eu pudesse destruí-la. Gostaria de saber se seria melhor criar esta tabela ou usar várias subconsultas (o que, acho eu, deixaria o sistema mais lento). Preciso de ajuda o quanto antes e agradeço por tudo.
gostaria de saber como faço para criar uma tabela temporária a partir de um sql embutido no Delphi. Eu já tenho o sql pronto (inclusive já testei no Access o sql e funcionou) só que eu queria que essa tabela ficasse alocada na memória apenas para fazer algumas consultas nela e após realizar estas consultas eu pudesse destruí-la. Gostaria de saber se seria melhor criar esta tabela ou usar várias subconsultas (o que, acho eu, deixaria o sistema mais lento). Preciso de ajuda o quanto antes e agradeço por tudo.
Elias Jr
Curtidas 0
Respostas
Vinicius2k
29/10/2004
Colega,
Isso depende se o Banco de Dados aceita ou não tabelas temporárias... por exemplo, o SQL Server aceita, já o IB 6 e Firebird não aceitam, *acho* que o IB 7.x aceita, mas não tenho certeza... realmente, vai depender do Banco de dados utilizado.
Mesmo que o servidor não aceite a criação de tabelas internamente designadas como temporárias, nada o impede de criá-las via um script DDL dentro da aplicação e destruí-las depois, mas como aplicar isso também vai depender do Banco de Dados e da camada de acesso utilizada.
Creio eu, apesar de nunca ter testado, que vc não terá nenhum ganho de performance com isso... ao contrário acho que vc vai perder bastante, pois vc vai precisar criar, povoar e selecionar (sem índices) uma tabela, ao invés de apenas selecionar várias tabelas nas sub-selects...
Uma das grandes chaves para performance nas selects são os índices... não se esqueça deles.
T+
Isso depende se o Banco de Dados aceita ou não tabelas temporárias... por exemplo, o SQL Server aceita, já o IB 6 e Firebird não aceitam, *acho* que o IB 7.x aceita, mas não tenho certeza... realmente, vai depender do Banco de dados utilizado.
Mesmo que o servidor não aceite a criação de tabelas internamente designadas como temporárias, nada o impede de criá-las via um script DDL dentro da aplicação e destruí-las depois, mas como aplicar isso também vai depender do Banco de Dados e da camada de acesso utilizada.
Creio eu, apesar de nunca ter testado, que vc não terá nenhum ganho de performance com isso... ao contrário acho que vc vai perder bastante, pois vc vai precisar criar, povoar e selecionar (sem índices) uma tabela, ao invés de apenas selecionar várias tabelas nas sub-selects...
Uma das grandes chaves para performance nas selects são os índices... não se esqueça deles.
T+
GOSTEI 0
Elias Jr
29/10/2004
Saudações Vinicius,
desculpe, naum informei o banco que estou utilizando que é o MySql 5.0. Nessa questão eu também naum sabia se ganharia ou perderia criando esta tabela. Então seria melhor nesse caso criar subconsultas. Ok, amigo, vou testar e qualquer coisa entrarei em contato. Ah! você viu o tópico da criptografia que vc postou? Coloquei uma resposta lá, tb estou testando o LockBox com MD5 e RSA. Valeu cara!
desculpe, naum informei o banco que estou utilizando que é o MySql 5.0. Nessa questão eu também naum sabia se ganharia ou perderia criando esta tabela. Então seria melhor nesse caso criar subconsultas. Ok, amigo, vou testar e qualquer coisa entrarei em contato. Ah! você viu o tópico da criptografia que vc postou? Coloquei uma resposta lá, tb estou testando o LockBox com MD5 e RSA. Valeu cara!
GOSTEI 0