sql >> Databasteknik >  >> RDS >> Mysql

Skapa tabeller med dynamiska namn via lagrad procedur

Du kan inte ersätta ett tabellnamn med en ? i ett utarbetat uttalande och låt sedan exekveringen infoga tabellnamnet.

Dynamiska tabellnamn är vanligtvis en dålig idé :det är bättre att skapa en stor tabell och lägga till en extra (indexerad) kolumn för det "virtuella tabellnamnet".

Om du verkligen behöver dynamiska tabeller måste du sammanfoga tabellnamnet i PREPARE sig själv.

För- och nackdelar med dynamiska tabellnamn

Antag att istället för att placera alla användare i en tabell, users med kolumner ID , Name , e-mail , country , ... , lägger du in dem i dynamiska tabeller, users_country , med kolumner ID , Name , e-mail , ...

  • Du kan inte enkelt fråga alla tabeller. Säg att du vill veta hur många av dina användare som är män - du måste fråga varje tabell och UNION resultaten. Blir inte snabbare.

  • Du kan fysiskt dela upp tabellerna med PARTITIONS ändå, men din logiska vy är fortfarande densamma. Alla fördelar du tror att du har med separata tabeller kan vanligtvis uppnås med en annan metod.




  1. Formatera mysql-frågeresultatet till önskat format

  2. Oracle:SQL-fråga för att hitta alla triggers som hör till tabellerna?

  3. Lägg till år till ett datum i PostgreSQL

  4. Beräkna decil i MySQL baserat på totaler