Jag kan komma på fyra möjliga lösningar för ditt scenario:
- använd fullständigt kvalificerade tabellnamn när du frågar efter den externa tabell. MySQL stöder
dbname.tablename
-syntax för att komma åt tabeller utanför den aktuella databasen. Detta kräver att den för närvarande anslutna användaren har lämpliga rättigheter att läsa från den begärda tabellen i en annan fysisk db. - om din externa databas körs på en annan MySQL-server (antingen på samma maskin eller via en nätverksanslutning) kan du använda replikering för att ständigt uppdatera en skrivskyddad kopia av fjärrtabellen. Replikering är endast möjlig om du kör två separata MySQL-instanser.
- använd
FEDERATED MySQL-lagringsmotor
att praktiskt taget importera tabellen till din nuvarande databas. Detta upphäver kravet på att ge den aktuella användaren åtkomsträttigheter till den andra databasen eftersom autentiseringsuppgifterna ges medCREATE TABLE
-sats när du använderFEDERATED
lagringsmotor. Detta fungerar även med databaserna som körs på olika fysiska servrar eller olika MySQL-instanser. Jag tror att detta kommer att vara det sämst presterande alternativet och har några begränsningar - mer eller mindre viktigt beroende på ditt användningsscenario och dina krav. - Detta är en förlängning av metod 1. Istället för att behöva ange de fullständigt kvalificerade tabellnamnen varje gång du begär information från din externa tabell kan du helt enkelt skapa en vy
inuti din nuvarande databas baserat på en enkel
VÄLJ <
> FRÅN < >.< > . Detta liknar sättet,
FEDERATED
-metoden fungerar, men är begränsad till tabeller på samma MySQL-instans.Personligen skulle jag betrakta metod (4) som den mest användbara - men de andra kan också vara möjliga lösningar beroende på dina krav.
Hur söker jag JSON-data i MySQL? Ett förberett uttalande, `WHERE .. IN(..)`-fråga och sortering - med MySQL