AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 28817
Accepted
Brian Nickel
Brian Nickel
Asked: 2012-11-17 11:12:46 +0800 CST2012-11-17 11:12:46 +0800 CST 2012-11-17 11:12:46 +0800 CST

O tamanho do varchar é importante em tabelas temporárias?

  • 772

Há um debate no trabalho de minha esposa sobre apenas usar varchar(255)para todos os varcharcampos em tabelas temporárias em procedimentos armazenados. Basicamente, um campo deseja usar 255 porque sempre funcionará mesmo se a definição mudar, e o outro campo deseja manter o tamanho nas tabelas de origem para possíveis melhorias de desempenho.

O acampamento de desempenho está certo? Existem outras implicações? Eles estão usando o SQL Server.

sql-server performance
  • 2 2 respostas
  • 5404 Views

2 respostas

  • Voted
  1. Best Answer
    Matt M
    2012-11-17T11:49:43+08:002012-11-17T11:49:43+08:00

    Dependendo de como você está usando suas tabelas temporárias, pode ocorrer um problema de truncamento de dados.

    Este exemplo é um pouco artificial, mas ilustra o meu ponto. Exemplo:

    1. A coluna da tabela do usuário é varchar(50).
    2. A coluna da tabela temporária é varchar(255).
    3. Você tem um registro com 45 caracteres nessa coluna da sua tabela de usuários.
    4. Em seu procedimento, você concatena '- for the win' ao final dessa coluna, antes de mesclar essa tabela temporária em sua tabela de usuário.

    A tabela temporária aceitaria de bom grado o novo valor varchar com um comprimento de 59. No entanto, sua tabela de usuário não poderia. Dependendo de como você lida com isso em seu procedimento, isso pode resultar em truncamento ou erro.

    A menos que você documente e considere esses problemas, seu procedimento pode ser executado de maneira inesperada.

    Pessoalmente, não acho que haja uma resposta para essa pergunta que seja correta 100% das vezes. Realmente depende de como você está usando essas tabelas temporárias.

    Espero que isto ajude

    • 6
  2. Matt
    2012-11-18T05:49:10+08:002012-11-18T05:49:10+08:00

    usando varchar(255)para todos os varcharcampos em tabelas temporárias em procedimentos armazenados.

    Eu me inclinaria para o uso do comprimento real do campo.

    Eu li recentemente que as tabelas temporárias do MySQL (suponho que o SQL Server seja semelhante) alocam memória suficiente para armazenar o comprimento máximo possível para cada varcharcoluna ... Uma abordagem sistemática para alocar 200%-500% da memória necessária para varcharcampos em todos procedimentos armazenados parecem um consumo desnecessário de recursos do sistema. Se você estiver usando uma quantidade significativa de memória criando essas tabelas temporárias, poderá estar reivindicando desnecessariamente a memória que estava em uso para armazenamento em cache, criando mais trabalho para o servidor em algum momento no futuro, mesmo após a conclusão dos procedimentos de armazenamento.

    Editar: Veja a resposta de Bill Karwin: https://stackoverflow.com/questions/1962310/importance-of-varchar-length-in-mysql-table

    • 0

relate perguntas

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve