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.