Il nostro progetto mantiene la banca dati mondiale nella struttura ad albero all'interno della tabella INNODB di MySQL db. La terra è la radice, quindi i paesi, quindi le regioni dei paesi e le località sono le foglie.Come utilizzare le chiavi esterne e un indice spaziale all'interno di una tabella MySQL?
Una chiave esterna è utilizzata per fornire un accesso rapido ai bambini (ad esempio città in una regione).
Ora vogliamo implementare una ricerca veloce nel database per le coordinate date. Una soluzione ovvia è l'uso dell'indice spaziale, che è una caratteristica delle tabelle MyISAM. Ma le tabelle MyISAM non supportano chiavi esterne. E le tabelle INNODB non supportano l'indice spaziale.
Quindi, se utilizziamo la tabella MyISAM, dobbiamo abbandonare la chiave esterna e ciò renderebbe i bambini troppo lunghi per la ricerca.
Come possiamo combinare la ricerca rapida di bambini nell'albero e avere anche un INDICE SPAZIALE in una tabella?
Si noti che lo scopo della chiave esterna non è di accelerare la query, ma di rafforzare la relazione tra le tabelle. Ciò che velocizzerà la ricerca è l'indice che creerai insieme alla chiave esterna. – Benjamin