Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erstellen Sie Tabellen mit dynamischen Namen über eine gespeicherte Prozedur

Sie können einen Tabellennamen nicht durch ein ? ersetzen in einer vorbereiteten Erklärung und lassen Sie dann den Tabellennamen ausführen.

Dynamische Tabellennamen sind normalerweise eine schlechte Idee :Es ist besser, eine große Tabelle zu erstellen und eine zusätzliche (indizierte) Spalte für den "Namen der virtuellen Tabelle" hinzuzufügen.

Wenn Sie wirklich dynamische Tabellen benötigen, müssen Sie den Tabellennamen in PREPARE verketten selbst.

Vor- und Nachteile dynamischer Tabellennamen

Angenommen, anstatt alle Benutzer in eine Tabelle zu stecken, users mit Spalten ID , Name , e-mail , country , ... , fügen Sie sie in dynamische Tabellen ein, users_country , mit Spalten ID , Name , e-mail , ...

  • Sie können nicht einfach alle Tabellen abfragen. Angenommen, Sie möchten wissen, wie viele Ihrer Benutzer männlich sind – Sie müssen jede Tabelle abfragen und die Ergebnisse UNION. Wird nicht schneller sein.

  • Sie können die Tabellen trotzdem physisch mit PARTITIONS aufteilen, aber Ihre logische Ansicht ist immer noch dieselbe. Jeder Vorteil, von dem Sie denken, dass Sie ihn mit separaten Tabellen haben, kann normalerweise mit einer anderen Methode erreicht werden.