user4951 Asked: 2012-06-15 00:22:18 +0800 CST2012-06-15 00:22:18 +0800 CST 2012-06-15 00:22:18 +0800 CST 为什么 innodb 不存储地理空间数据? 772 我很好奇。 我有商务桌。现在我想我将不得不创建一个单独的表,位置表。那个单独的表应该是 myisam。 但我为什么要这样做? 为什么 innodb 不能存储积分? myisam 2 个回答 Voted Best Answer Remus Rusanu 2012-06-15T05:39:38+08:002012-06-15T05:39:38+08:00 因为R-Trees不是B-Trees: 对于 MyISAM 表,SPATIAL INDEX创建一个 R-tree 索引。对于支持空间列的非空间索引的存储引擎,引擎会创建 B 树索引。空间值的 B-tree 索引对于精确值查找很有用,但对于范围扫描无效。 为 InnoDb 添加一个完全不同的存储结构是一项巨大的工作(由于锁定和恢复,比为 MyISAM 多得多)。 ypercubeᵀᴹ 2012-06-15T03:24:06+08:002012-06-15T03:24:06+08:00 事实上,它可以。但它还不支持它们的空间索引。请参阅官方 Mysql 文档对 InnoDB 表的限制: InnoDB 表在 MySQL 5.0.16 之前不支持空间数据类型。从 5.0.16 开始,InnoDB 支持空间数据类型,但不支持它们的索引。
因为R-Trees不是B-Trees:
为 InnoDb 添加一个完全不同的存储结构是一项巨大的工作(由于锁定和恢复,比为 MyISAM 多得多)。
事实上,它可以。但它还不支持它们的空间索引。请参阅官方 Mysql 文档对 InnoDB 表的限制: