Como exemplo, vamos pegar o PostgreSQL e dizer que temos duas tabelas com relacionamento um para muitos. Fazer o INNER JOIN produz "duplicatas" da primeira tabela. Essas linhas duplicadas estão realmente retornando como cópias dos mesmos dados do banco de dados no nível da conexão do banco de dados ou são apenas uma representação dos dados no cliente para caber esses dados em uma tabela?
relate perguntas
-
Posso ativar o PITR depois que o banco de dados foi usado
-
Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo
-
Os procedimentos armazenados impedem a injeção de SQL?
-
Sequências Biológicas do UniProt no PostgreSQL
-
Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?
Vamos tentar e ver.
Sim, os dados estão realmente duplicados. Existem muito mais de 200 as na chamada recvfrom().
Há muita confusão nas respostas que estou vendo aqui até agora, mas jjanes está correto. Sua pergunta original foi:
Sim, em um relacionamento um-para-muitos (ou muitos-para-muitos), a
JOIN
resultará na duplicação dos dados nas linhas do lado oposto de muitos (em um relacionamento muitos-para-muitos, isso causaria duplicação em ambos os lados).De uma perspectiva lógica, isso significa que os dados são estruturados com duplicatas quando vêm da camada de banco de dados, antes mesmo de chegarem ao lado do cliente. O lado do cliente não está fazendo a duplicação.
Do ponto de vista físico, os dados são realmente duplicados (normalmente ficam na memória durante a execução da consulta). Isso significa que se houvesse uma única coluna de caracteres que ocupasse 1 byte de dados na tabela nativa, se ela fosse duplicada 5 vezes a partir do ,
JOIN
a duplicação causaria a existência de 5 bytes físicos de dados. Seriam 5 bytes de dados transferidos pela rede e retornados ao lado do cliente. Observe que isso não está duplicando os dados da tabela base original no disco. É uma duplicação temporária que normalmente reside na memória.