Mysql
 sql >> Database >  >> RDS >> Mysql

Crea tabelle con nomi dinamici tramite stored procedure

Non puoi sostituire un nome di tabella con un ? in una dichiarazione preparata e poi fai inserire il nome della tabella.

I nomi dinamici delle tabelle sono generalmente una cattiva idea :è meglio creare 1 grande tabella e aggiungere una colonna extra (indicizzata) per il "nome della tabella virtuale".

Se hai davvero bisogno di tabelle dinamiche, dovrai concatenare il nome della tabella in PREPARE stesso.

Pro e contro dei nomi dinamici delle tabelle

Supponiamo che invece di mettere tutti gli utenti all'interno di una tabella, users con colonne ID , Name , e-mail , country , ... , li inserisci in tabelle dinamiche, users_country , con colonne ID , Name , e-mail , ...

  • Non puoi interrogare facilmente tutte le tabelle. Supponiamo di voler sapere quanti dei tuoi utenti sono maschi:devi interrogare ogni tabella e UNION i risultati. Non sarà più veloce.

  • Puoi comunque dividere fisicamente le tabelle usando PARTITIONS, ma la tua vista logica è sempre la stessa. Qualsiasi vantaggio che pensi di avere utilizzando tabelle separate può solitamente essere ottenuto utilizzando un altro metodo.