sql >> Database >  >> RDS >> Mysql

Maak tabellen met dynamische namen via de opgeslagen procedure

U kunt een tabelnaam niet vervangen door een ? in een voorbereide verklaring en laat de execute de tabelnaam invoegen.

Dynamische tabelnamen zijn meestal een slecht idee :het is beter om 1 grote tabel te maken, en een extra (geïndexeerde) kolom toe te voegen voor de "virtuele tabelnaam".

Als je echt dynamische tabellen nodig hebt, moet je de tabelnaam samenvoegen in PREPARE zelf.

Voor- en nadelen van dynamische tabelnamen

Stel dat in plaats van alle gebruikers in één tabel te plaatsen, users met kolommen ID , Name , e-mail , country , ... , je plaatst ze in dynamische tabellen, users_country , met kolommen ID , Name , e-mail , ...

  • U kunt niet gemakkelijk alle tabellen doorzoeken. Stel dat u wilt weten hoeveel van uw gebruikers mannelijk zijn - u moet elke tabel opvragen en UNION de resultaten. Zal niet sneller zijn.

  • U kunt de tabellen hoe dan ook fysiek splitsen met PARTITIONS, maar uw logische weergave is nog steeds hetzelfde. Elk voordeel dat je denkt te hebben bij het gebruik van aparte tabellen, kan meestal worden bereikt met een andere methode.




  1. Hoe verbinding maken met een MySQL-database vanaf een iPhone?

  2. Converteer een object naar een string in PHP

  3. MySql gebruiken MySQLMembershipProvider - autogenerateschema=true werkt niet?

  4. RMySQL-installatieprobleem met Mysql 5.5