Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #99711
    Avatar de drigodrigo
    Participante

      Olaa,

      Estive estudando o TRUNCATE e possuo algumas dúvidas:

      1) Pelo que estive lendo o TRUNCATE é mais rápido que o DELETE pois ele não varre a tabela, mas se usado um DELETE sem clausula where todos os dados da tabela seriam eliminados, mesmo nessa situação o TRUNCATE tem um maior desempenho que o DELETE ?

      2) No livro de Certificação para o exame 1Z0-051, existe a seguinte afirmação:

      ” TRUNCATE is a DDL (Data Definition Language) command. It operates within the data dictionary and affects the structure of the table, not the contents of the table. However, the change it makes to the structure has the side effect of destroying all the rows in the table.”

      a) “It operates within the data dictionary and affects the structure of the table, not the contents of the table.” em portugues “Ele opera no dicionario de Informação e afeta a estrutura da tabela, não o conteudo da tabela”.

      Mas o que seria afetar a estrutura da tabela e nao o conteudo nesse caso ? O que seria esse dicionário de informação (data dictionary) citado ?

      Desde Já, Agradeço.

      #99712
      Avatar de rmanrman
      Participante

        O TRUNCATE não deleta as linhas da tabelas, simplesmente ele marca na estrutura da tabela que aquela tabela está vazia… por isso é considerado como DDL, já o DELETE é um comando DML.

        Detalhe importante como o TRUNCATE é DDL, não existe ROLLBACK desta transação, ao contrario do DELETE.

        Faça um teste em uma tabela grande, verá que o TRUNCATE é instantaneo, e o DELETE vai demorar um tempo consideravel.

        1 – Sim, no caso de eliminar todos os registro de uma tabela o TRUNCATE é mais rapido que o DELETE.

        2 – O dicionario de dados, são tabelas que guardam os metadados dos objetos de banco. Imagine que existe uma tabela que possuia informações de todas as tabelas do banco, e uma coluna desta tabela é um campo booleano que indica se a tabela está vazia ou não. Pois é o TRUNCATE vai nesse registro e da um UPDATE no campo setando TRUE, de modo bem grosseiro, seria isso…

        #99729
        Avatar de drigodrigo
        Participante

          Prezado Rman,

                            Muito obrigado pela atenção.Minha dúvida foi sanada.
          

          Grande Abraço.

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress