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

Opret tabeller med dynamiske navne via lagret procedure

Du kan ikke erstatte et tabelnavn med en ? i en udarbejdet redegørelse og få derefter execute til at indsætte tabelnavnet.

Dynamiske tabelnavne er normalt en dårlig idé :det er bedre at lave 1 stor tabel og tilføje en ekstra (indekseret) kolonne for det "virtuelle tabelnavn".

Hvis du virkelig har brug for dynamiske tabeller, skal du sammensætte tabelnavnet i PREPARE sig selv.

Fordele og ulemper ved dynamiske tabelnavne

Antag, at i stedet for at placere alle brugere i én tabel, users med kolonner ID , Name , e-mail , country , ... , sætter du dem i dynamiske tabeller, users_country , med kolonner ID , Name , e-mail , ...

  • Du kan ikke nemt forespørge alle tabeller. Lad os sige, at du vil vide, hvor mange af dine brugere der er mænd - du skal forespørge på hver tabel, og UNION resultaterne. Bliver ikke hurtigere.

  • Du kan alligevel opdele tabellerne fysisk ved hjælp af PARTITIONS, men din logiske visning er stadig den samme. Enhver fordel, du tror, ​​du har ved at bruge separate tabeller, kan normalt opnås ved hjælp af en anden metode.




  1. Opdater tabel ved hjælp af dynamisk forberedte udsagn

  2. Sådan bruger du forberedte udsagn i forespørgsler med en IN-klausul i PHP

  3. Hvordan kan jeg angive et indekstip i Entity Framework?

  4. Sorter Multi-dimensional Array efter givne indekser - PHP?