Ir para conteúdo
Luiz Henrique

Desempenho em múltiplos insert com PDO

Recommended Posts

Olá,

 

Preciso fazer uma inserção no DB de registros referente a pagamentos, quando for no crédito será realizado o insert com sua respectiva data de compensação e valor da parcela exemplo:

 3 parcelas de 100.00 e cada registro em seu devido mês:

INSERT INTO tabela (valor, data) VALUES (100, 2022-08-17),(100, 2022-09-17),(100, 2022-10-17)

É mais eficiente fazer da forma acima ou colocar 3 INSERT?

Ou existe forma melhor de fazer isso?

 

Obrigado.,

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da forma acima é bem mais rápido
Se for resolver em php, cada insert vai ser uma requisição ao database.
Já fiz registro de tabelas enormes, fiz vários testes tip benchmark e cheguei a um número de 100 inserções por insert
Como vais inserir apenas e somente dois dados, muito provavelmente vai poder fazer muito mais inserções por insert.
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para requisições concorrentes, desde que se use transactions, não há problema algum.

https://www.php.net/manual/pt_BR/pdo.transactions.php
https://www.php.net/manual/pt_BR/mysqli.begin-transaction.php

 

Desta forma, nenhuma requisição causará interferência em outra, mesmo que sejam requisitadas no exato mesmo instante

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por Carlos Antoliv
      Senhores, bom dia.
       
      tenho um campo status. Então, a ideia é mudar o status. Consigo alterar o status quando necessário. Daí, pensei em todas vez que alterar, salvar o id do usuário, data, hora, o último status alterado...
      consigo fazer isso com INSERT, depois do UPDATE.
       
      Nao uso trigger. Até tentei fazer, mas não saiu como eu queria.
       
      Então, para os maiores entendedores do assunto, a melhor prática seria a TRIGGER ou INSERT ? Melhor prática ou o que mais funciona na prática ?
       
      Alguém poderia dissertar sobre isso ?
      Vlw..abço
    • Por Marcones Borges
      Olá, estou precisando de uma ajuda...
       
      Tenho duas tabelas
      ministros
      entradas
       
      Preciso exibir a lista dos ministros que não contam no relatório gerado em entradas.
       
      Fiz assim a combinação.
       

      $sql = "SELECT ministro.id, ministro.area, entrada.beneficiario, entrada.id_benificiario, entrada.id_benificiario, entrada.tipo_lancamento FROM ministro INNER JOIN entrada ON ministro.id = entrada.id_benificiario WHERE ministro.area = entrada.area_beneficiario AND ministro.nome = entrada.beneficiario AND entrada.id_benificiario='[{$id_exer}' AND entrada.tipo_lancamento='ministro'  "; $stm = $conexao->prepare($sql); $stm->execute(); $clientes = $stm->fetchAll(PDO::FETCH_OBJ);
       
      Fiz as combinações direitinho mais não consigui exbir os que estão na tabela ministro e não estão na tabela entrada.
    • Por Marcones Borges
      Olá, sou iniciante em php, estou tentando migrar um código de php 5.6 para pdo mais da erro, não roda....
      Alguém pode me ajudar?

      include '../Connections/functions.php';           function montaSelect()         {  $sql = "SELECT * FROM membros"; $result = $con->query($sql); if ($result->num_rows > 0 )  {   while($dados = $result->fetch_assoc())   {   $opt .= '<option value="'.$dados['id'].'">'.$dados['nome'].'</option>';   } } else {           $opt = '<option value="0">Nenhum Membro cadastrado</option>';     return $opt; }         }
       
      Este era o código original:
       

      // require 'topof.php'; // echo $usuario;         /**          * função que retorna o select          */         function montaSelect()         {                 $sql = "SELECT id, nome FROM membros '";                 $query = mysql_query( $sql );                 if( mysql_num_rows( $query ) > 0 )                 {                         while( $dados = mysql_fetch_assoc( $query ) )                         {                                 $opt .= '<option value="'.$dados['id'].'">'.$dados['nome'].'</option>';                         }                 }                 else                         $opt = '<option value="0">Nenhum Membro cadastrado</option>';                 return $opt;         }
    • Por Sapinn
      Recentemente, o seguinte erro estava aparecendo em meu site 'max_user_connections', depois de muitas pesquisas descobri que o problema era devido a uma conexão persistente de banco de dados, então o removi do meu código e funcionou. Outro problema surgiu agora, meu lastInsertId () está retornando 0. Quando eu uso a conexão persistente, ele funciona se eu removê-lo, ele falha. Eu nem sei mais o que fazer. Vou deixar as partes mais importantes do meu código aqui:
      Conexão:
      public function __construct()     {         $dsn = 'mysql:host='.$this->host.';dbname='.$this->bank;            try {             $this->dbh = new PDO($dsn,$this->user,$this->password);             $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);                               } catch (PDOException $e) {             print "Error!: " . $e->getMessage() . "<br/>";             die();         }               }     public function lastId Inserted(){         return $this->dbh->lastInsertId();     }  
      Pesquisando pelo último Id:
       
       if($this->saleModel->store($data)):                             $sale_id = $this->db->lastId Inserted();                                                         $data['sale_id'] = $sale_id;                             $this->sellModel->sellProduct($data);                             $total = $stock->quant_product - $data['quant_sale'];                             $this->ProductModel->decreaseSales($data['product_id'],$total);                             Url::redirect('sales/sellProducts/'.$sale_id.'');                         endif;  
×

Informação importante

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