Nuestro proyecto mantiene la base de datos mundial en estructura de árbol dentro de la tabla INNODB de MySQL db. La tierra es la raíz, luego los países, luego las regiones de los países y las ubicaciones son las hojas.¿Cómo usar claves externas y un índice espacial dentro de una tabla MySQL?
Una clave externa se utiliza para proporcionar un acceso rápido a los niños (por ejemplo, ciudades de una región).
Ahora queremos implementar una búsqueda geográfica rápida en la base de datos para las coordenadas dadas. Una solución obvia es utilizar SPATIAL INDEX, que es una característica de las tablas MyISAM. Pero las tablas MyISAM no son compatibles con claves externas. Y las tablas INNODB no admiten ÍNDICE ESPACIAL.
Entonces, si usamos la tabla MyISAM, tenemos que abandonar la clave externa y eso haría que los niños busquen demasiado tiempo.
¿Cómo podemos combinar la búsqueda rápida de niños en árbol y también tenemos un ÍNDICE ESPACIAL en una tabla?
Tenga en cuenta que la finalidad de la clave externa no es acelerar la consulta, sino reforzar la relación entre las tablas. Lo que acelerará la búsqueda es el índice que creará junto con la clave externa. – Benjamin