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 / 10729
Accepted
user784637
user784637
Asked: 2012-01-17 02:52:31 +0800 CST2012-01-17 02:52:31 +0800 CST 2012-01-17 02:52:31 +0800 CST

Devo dividir uma única tabela com uma AUTO_INCREMENT PRIMARY KEY em duas tabelas que podem ser unidas nessa PRIMARY KEY?

  • 772

Tenho uma tabela que possui 46 campos com uma AUTO_INCREMENT PRIMARY KEY. É difícil olhar para uma tabela que tem tantas colunas, então frequentemente uso uma SELECTinstrução para ver 34 dos campos que categorizo ​​mentalmente como 'grupo 1' e 12 campos que categorizo ​​como 'grupo 2'.

Eu enfrentaria um desempenho atingido em leituras/gravações se eu dividisse esta tabela em duas tabelas, uma com 34 campos e outra com 12 campos?

Ambos teriam a mesma CHAVE PRIMÁRIA AUTO_INCREMENT para que pudessem ser unidos na chave PRIMÁRIA se eu precisar examinar 46 campos de uma vez.

mysql
  • 3 3 respostas
  • 840 Views

3 respostas

  • Voted
  1. Mike Sherrill 'Cat Recall'
    2012-01-17T03:51:05+08:002012-01-17T03:51:05+08:00

    É difícil olhar para uma tabela que tem tantas colunas, então frequentemente uso uma instrução SELECT para ver 34 dos campos que categorizo ​​mentalmente como 'grupo 1' e 12 campos que categorizo ​​como 'grupo 2'.

    Crie uma visualização .

    • 6
  2. Best Answer
    gbn
    2012-01-17T02:56:40+08:002012-01-17T02:56:40+08:00

    Se houver uma relação obrigatória de 1:1, você não agregará muito valor dividindo a tabela. Há casos em que as relações 1:0..1 são melhores como tabelas separadas.

    E suas chaves ficariam fora de sincronia rapidamente. Supondo que você vá inserir nas duas tabelas em uma única transação, uma falha na primeira inserção geraria um gap que não acontece na 2ª tabela.

    Se você tiver um AUTO_INCREMENT em uma tabela e usar LAST_INSERT_ID , perderá a capacidade de fazer INSERTs de várias linhas

    O princípio KISS se aplica...

    • 5
  3. Karen Lopez
    2012-01-17T12:13:17+08:002012-01-17T12:13:17+08:00

    É difícil dar uma resposta sem saber quais são as colunas. Se a tabela for projetada corretamente (normalizada corretamente), ter muitas colunas não é uma coisa ruim. Você pode usar exibições conforme sugerido ou pode apenas selecionar as colunas que precisa ver com base no motivo pelo qual está fazendo uma consulta.

    Meu palpite, porém, é que se víssemos as colunas, encontraríamos alguns casos de problemas de normalização, já que você naturalmente deseja ver apenas parte delas. Isso é apenas um palpite, não uma regra de design ou algo assim.

    • 4

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

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

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

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