Em PostgreSQL, é mais rápido para incluir colunas de texto na mesma mesa, em vez de uma tabela separada?

votos
10

Qual projeto você acha que corre mais rápido no PostgreSQL?

  1. Fazendo uma tabela de 15 coluna de varchars e similares, mas colocar todas as colunas de texto em uma tabela separada com uma ligação Fkey de volta para esta tabela. E vamos imaginar que você deseja procurar o registro com ID de 4, mas, em seguida, retire todas as linhas de volta, incluindo o material a partir das colunas de texto na tabela associada. E vamos imaginar as mesas têm 500.000 linhas.

  2. Fazendo uma tabela de varchars e similares 15 coluna, e incluem as colunas de texto na mesma mesa. Novamente, imagine o mesmo que acima - grab registro ID 4 e puxe o registro completo, e há 500.000 linhas na tabela.

Quero dizer, na maioria dos bancos de dados, a maneira que eu entendo, quando você vai para a camada física de como as colunas de texto funcionam, eles mantêm um pequeno ID de fato na coluna da tabela em cada linha, e que ID vai para um separado, bloco exclusivo página (ou outra nomenclatura) no banco de dados. Então, para mim, parece que a opção B seria correr mais rápido porque não há nenhuma necessidade para a sobrecarga do Fkey juntar-se, e porque as colunas de texto não são, na verdade, ocupando mais do que um espaço inteiro nessa coluna em que determinada tabela - e esse inteiro é uma chave no banco de dados a um bloco página em outro lugar.

Publicado 08/12/2008 em 01:30
fonte usuário
Em outras línguas...                            


2 respostas

votos
3

(B) é correcta, pela razão dada na própria questão.

Respondeu 08/12/2008 em 10:07
fonte usuário

votos
16

O PostgreSQL não lidar com colunas de texto da mesma forma como outros DBMS.

De seus documentos:

Dica: Não há diferenças de desempenho entre estes três tipos, além do aumento de tamanho de armazenamento quando utilizando o tipo com brancos, e alguns ciclos adicionais para verificar o comprimento ao armazenar em uma coluna com restrição de comprimento. Enquanto personagem (n) tem vantagens de desempenho em alguns outros sistemas de base de dados, ele não tem tais vantagens em PostgreSQL. Na maioria das situações de texto ou de caráter variável deve ser usado em seu lugar.

Confira o manual

Respondeu 10/12/2008 em 00:27
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more