Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Criar Tabelas com Nomes Dinâmicos via Procedimento Armazenado


Você não pode substituir um nome de tabela por um ? em uma declaração preparada e, em seguida, faça com que o execute insira o nome da tabela.

Nomes de tabelas dinâmicas geralmente são uma má ideia :é melhor fazer 1 tabela grande e adicionar uma coluna extra (indexada) para o "nome da tabela virtual".

Se você realmente precisa de tabelas dinâmicas, você terá que concatenar o nome da tabela no PREPARE em si.

Prós e contras de nomes de tabelas dinâmicas


Suponha que em vez de colocar todos os usuários dentro de uma tabela, users com colunas ID , Name , e-mail , country , ... , você os coloca em tabelas dinâmicas, users_country , com colunas ID , Name , e-mail , ...

  • Você não pode consultar facilmente todas as tabelas. Digamos que você queira saber quantos de seus usuários são do sexo masculino - você precisa consultar cada tabela e UNIR os resultados. Não será mais rápido.

  • Você pode dividir fisicamente as tabelas usando PARTITIONS de qualquer maneira, mas sua visão lógica ainda é a mesma. Qualquer vantagem que você acha que tem usando tabelas separadas geralmente pode ser obtida usando outro método.