我有一个InnoDB中的数据库,因为我需要一致性(级联删除)。
现在,我希望使用空间索引来选择按几何距离排序的行。
然而,空间索引需要MyISAM。什么是最好的选择?
我所能想到的最好的方法是将位置放在一个单独的MyISAM表中,并将InnoDB表与之连接起来。(请注意,为了简化事情,我已经从语句中删除了空间魔力。)
select * from inno join isam using (id) order by isam.distance其他解决方案?
发布于 2013-09-05 11:44:08
是的,这是我认为最好的。您可以使用InnoDB (引用完整性)和MyISAM (空间索引)。
唯一的技术困难是确保MyISAM表与InnoDB表同步。这可以通过触发器或存储过程来完成(因此InnoDB表上的每一项操作都是通过一个过程完成的)。
另一个“好处”是,由于坐标值在两个表中都是重复的,您可以跳过备份MyISAM表(或单独备份),并有一个过程在数据库恢复之后重新创建它。您可能需要一个过程来定期检查这两个表是否同步。
为了加快需要空间索引的查询--如果表不是很大--您可以确保索引预先加载到内存中,甚至在单独的缓存中加载。见LOAD INDEX INTO CACHE语法和多密钥缓存
发布于 2018-06-22 05:07:31
在MySQL 5.7,InnoDB获得了空间索引在MySQL 5.7中有什么新的中
InnoDB现在支持MySQL支持的空间数据类型。在此发布之前,InnoDB将将空间数据存储为二进制
BLOB数据。BLOB仍然是底层数据类型,但空间数据类型现在映射到新的InnoDB内部数据类型DATA_GEOMETRY。
我相信这是重写/重写带来的提升的一部分
也看,
https://dba.stackexchange.com/questions/49307
复制相似问题