Pesquisando por aí parece haver relatórios mistos, independentemente do tamanho de uma VARCHAR2
coluna no Oracle afetar o desempenho ou não.
Gostaria de dar VARCHAR
uma pequena reviravolta na questão do tamanho e espero ter uma ideia:
Dados os campos de texto livre (multilinha) (que não são coisas curtas, como nomes) que você deseja armazenar em um banco de dados (Oracle), existe algum ponto (desempenho ou desempenho incorreto) em não maximizar a VARCHAR
capacidade ( VARCHAR2(4000)
no Oracle), mas escolher um valor menor, como 1024 ou 512, porque provavelmente será suficiente em 98% dos casos.
oracle
performance
varchar
Martin
fonte
fonte
Respostas:
Isso afeta o uso da memória, especialmente quando um programa cliente precisa alocar memória suficiente para receber um conjunto de dados.
Lembre-se de que muitos aplicativos (especialmente aplicativos da Web) usam UTF-8, que é um conjunto de caracteres de vários bytes. Como tal, você deve realmente considerar caracteres em vez de bytes.
Se eu esperava mais de mil caracteres, consideraria ativamente um CLOB. Eu estaria pensando se ele armazenará texto sem formatação ou alguma forma de marcação (wiki / html?), Uso com idiomas que não sejam do euro. As perguntas e respostas aqui, por exemplo, seriam CLOB, mas os comentários podem caber em um VARCHAR.
Se você atingir um VARCHAR no máximo, em seis meses alguém desejará aumentá-lo novamente e você estará se chutando por não usar um CLOB.
fonte
Geralmente, não há considerações de desempenho, embora haja problemas secundários que podem ser importantes para você. O limite de a
varchar
deve ser considerado uma restrição como qualquer outra - existe para impor uma regra de negócios.Na IMO, a pergunta que você deve fazer é "Desejo impedir que os dados de texto livre armazenados neste campo sejam maiores que n bytes / caracteres" - esse é o único fator determinante na escolha entre
varchar(512)
evarchar(4000)
.Observe que estou assumindo que você está falando sobre
varchar
o tipo SQL - a situação é diferentepl/sql
e a escolha do tamanho pode ser crucial por motivos de alocação de memória.fonte
clob
, não deveria?Se um valor menor funcionará em 98% dos casos, mas é necessário um Varchar2 (4000) para trabalhar em 100% dos casos, você terá pouca opção a não ser usar o valor maior . Criar uma tabela separada para 2% dos valores e, em seguida, coordenar inserções / seleções etc. adicionaria complexidade que obliteraria quaisquer benefícios de memória ou desempenho por não estender o campo.
fonte