Mysql
 sql >> Base de données >  >> RDS >> Mysql

Créer des tables avec des noms dynamiques via une procédure stockée

Vous ne pouvez pas remplacer un nom de table par un ? dans une déclaration préparée puis demandez à l'exécution d'insérer le nom de la table.

Les noms de table dynamiques sont généralement une mauvaise idée :il est préférable de faire 1 grande table, et d'ajouter une colonne supplémentaire (indexée) pour le "nom de la table virtuelle".

Si vous avez vraiment besoin de tables dynamiques, vous devrez concaténer le nom de la table dans PREPARE lui-même.

Avantages et inconvénients des noms de table dynamiques

Supposons qu'au lieu de mettre tous les utilisateurs dans une seule table, users avec les colonnes ID , Name , e-mail , country , ... , vous les placez dans des tableaux dynamiques, users_country , avec les colonnes ID , Name , e-mail , ...

  • Vous ne pouvez pas facilement interroger toutes les tables. Supposons que vous vouliez savoir combien de vos utilisateurs sont des hommes - vous devez interroger chaque table et UNION les résultats. Ce ne sera pas plus rapide.

  • Vous pouvez quand même diviser physiquement les tables à l'aide de PARTITIONS, mais votre vue logique reste la même. Tout avantage que vous pensez avoir en utilisant des tables séparées peut généralement être atteint en utilisant une autre méthode.