Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

willian da rosa

[Resolvido] Otimizar banco de dados

Recommended Posts

Bom tarde pessoal,

Hoje fui obrigado a trabalhar com transações.

Então houve a duvida, quando é recomendável faz transações?

Ou seja só quando somos obrigados á inserir algum dado que tenha chave estrangeira, e mesma ainda não foi criada.

Ou posso fazer transações em um simples Select ou Insert.

E em questão de processamento uma transação consome mais recurso do servidor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Transação deve ser usada quando você precisa garantir que todas as queries em questão sejam executadas. Ex: Não pode haver INSERT na tabela cliente_pedido se o INSERT na tabela cliente e na tabela pedido não forem confirmados. Essa é a utilidade da transação. Do contrário um simples mysql_insert_id() resolveria.

 

Evidentemente tudo aqui que faz o servidor esperar consome mais doque aquilo que simplesmente manda uma instrução e espera uma resposta. Por isso todo e qualquer projeto tem de ser estudado para saber oque, quando e onde usar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende do que você quer fazer. Existem situações onde INNER JOIN e subqueries por exemplo resolvem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não espera que eu saia "cuspindo" queries e metodologias aqui porque você me disse isso né? :yay:

Quando eu digo depende do que você quer fazer significa que você tem que analisar caso a caso de sua aplicação e usar o metodo mais eficaz. Ex: Suponha que você tem uma tabela de alunos, outra de notas e outra de chamada.

 

Trazer as notas dos alunos com um INNER JOIN é fácil, mas suponha que na mesma query você queira saber quantas faltas cada aluno teve. Se você fizer INNER JOIN com a tabela de chamada os registros vão se repetir muitas vezes porque a tabela tem a presença diária do aluno. E você quer o total de faltas do mês por exemplo. Usar uma subquerie na tabela de chamada neste caso evita 2 conexões alem de trazer tudo em um mesmo resultado.

 

Cada caso é um caso.

 

P.S.

Isso deveria ser uma discussão do fórum de MySQL e não do de PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.