2
respostas

Escolha de tipos de dados

Como escolher o melhor tipo de dados de acordo com critérios de performance ou armazenamento do banco?

Por exemplo: na aula 2 foi escolhido o tipo VARCHAR2(11) para armazenar o CPF. Por que não escolher o tipo CHAR(11) já que sei que obrigatoriamente o CPF possui 11 dígitos?

Outra dúvida: quando escolher FLOAT no lugar de NUMBER?

2 respostas

O uso destas técnicas serve para extrairmos ao máximo a performance do banco de dados, fazendo o processador de consultas trabalhar a favor na hora de escolher o melhor plano de execução.

Fazer o ajuste (tunning) de uma consulta é mais uma arte do que uma ciência. Uma mesma query pode ter um comportamento totalmente diferente mediante ao montante de registros existente, às chaves presentes, aos recursos do sistema, às estatísticas de dados, aos índices e outros fatores. Neste contexto, este artigo descreve algumas das principais técnicas associadas à escrita de queries otimizadas, mostrando estruturas que devem ser evitadas dentro das consultas por as tornarem menos eficazes.

Abordaremos algumas das técnicas mais avançadas existentes para reconstrução de cursores, expressões de pivotamento (PIVOT) e estratégias de otimização de índices, completando todo o estudo para manter um ambiente de banco de dados que preza pela performance de acordo com as boas práticas orientadas pela engenharia da equipe do SQL Server.

Stevie boa noite Com relação ao uso de char e varchar2 vai de acordo com a necessidade. Por exemplo, no caso de char, o tamanho é pré-fixado enquanto que varchar2 vai ocupar o tamanho que vc inserir de dados até o seu limite. No caso do CPF podemos olhar por algumas óticas quando o campo é CHAR no lugar do VARCHAR2: 1º - nem todos os CPF's tem a mesma quantidade de caracteres, ou seja, se vc nao colocar o 0 (zero), ele vai assumir um espaço em branco se você não tratar. 2° - ao colocar um número CPF, e por algum motivo, alguém esquecer um caracter, na consulta vc é obrigado a colocar o numero com espaço. 3º - Se vc utilizar o CPF como chave primária (sei que isso não é uma boa pratica mas tem pessoa que prefere fazer isso), as pesquisas com relacionamento tende a uma queda de performance por causa do tipo de dado. Joins não são muito performáticos nestes casos.

O uso de FLOAT e NUMBER a primeira vista vai do tamanho da capacidade que terá armazenado dentro do banco de dados. Segundo a documentação da Oracle:

  • O FLOAT é um subtipo de dados do NUMBER no qual sua precisa aumenta. No FLOAT a precisão sai de 38 para até 126 digitos binarios, ou seja, pode armazenar valores maiores de precisão. Ambos podem armazenar até 22 bytes de dados.

Bom acho que isso, espero ter ajudado.