Jeg kan komme i tanke om fire mulige løsninger til dit scenario:
- brug fuldt kvalificerede-tabelnavne, når du forespørger efter den eksterne bord. MySQL understøtter
dbname.tablename
-syntaks for at få adgang til tabeller uden for det aktuelle databaseomfang. Dette kræver, at den aktuelt tilsluttede bruger har de relevante rettigheder til at læse fra den anmodede tabel i en anden fysisk db. - hvis din eksterne database kører på en anden MySQL-server (enten på den samme maskine eller via en netværksforbindelse), kan du bruge replikering til konstant at opdatere en skrivebeskyttet kopi af fjerntabellen. Replikering er kun mulig, hvis du kører to separate MySQL-instanser.
- brug
FEDERATED MySQL-lagringsmotor
til virtuelt at importere tabellen ind i din nuværende database. Dette ophæver kravet om at give den aktuelle bruger adgangsrettigheder til den anden database, da legitimationsoplysningerne er givet medCREATE TABLE
-sætning ved brug afFEDERATED
lagermotor. Dette fungerer også med databaserne, der kører på forskellige fysiske servere eller forskellige MySQL-instanser. Jeg tror, at dette vil være den dårligst ydende mulighed og har nogle begrænsninger - mere eller mindre vigtigt afhængigt af dit brugsscenarie og dine krav. - Dette er en udvidelse til metode 1. I stedet for at skulle angive de fuldt kvalificerede-tabel-navne, hver gang du anmoder om oplysninger fra din eksterne tabel, kan du simpelthen oprette en visning
inde i din nuværende database baseret på en simpel
VÆLG <
> FRA < >.< > . Dette ligner måden,
FEDERATED
-metoden virker, men er begrænset til tabeller på den samme MySQL-instans.Personligt ville jeg betragte metode (4) som den mest nyttige - men de andre kunne også være mulige løsninger afhængigt af dine krav.
Hvordan søger man JSON-data i MySQL? En forberedt erklæring, `HVOR .. IN(..)`-forespørgsel og sortering - med MySQL