mysql索引空间突然增大_在MySQL中使用空间索引时性能不佳

重新建议在Stack Overflow上提出的一个问题,这是一个更好的论坛。

我正在尝试进行一些实验,以推动不是地理空间但非常适合的数据集,并且发现结果有些令人不安。数据集是基因组数据,例如人类基因组,其中我们有一个DNA区域,其中诸如基因之类的元素占据特定的起始和终止坐标(我们的X轴)。我们有多个占据Y轴的DNA(染色体)区域。目标是带回沿单个Y坐标与两个X坐标相交的所有项目,例如LineString(START 1,END 2)。

该理论听起来很合理,所以我将其推入了现有的基于MySQL的基因组项目中,并提出了一个表结构,如下所示:

CREATE TABLE `spatial_feature` (

`spatial_feature_id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`external_id` int(10) unsigned NOT NULL,

`external_type` int(3) unsigned NOT NULL,

`location` geometry NOT NULL,

PRIMARY KEY (`spatial_feature_id`),

SPATIAL KEY `sf_location_idx` (`location`)

) ENGINE=MyISAM;

external_id表示我们已编码到该表中的实体的标识符并对其进行编码external_type。一切看起来都很不错,我输入了一些初步的数据(30,000行),这些数据似乎运行良好。当它增加到超过300万行标记时,MySQL拒绝使用空间索引,并且在强制使用空间索引时速度较慢(40秒与使用全表扫描的5秒相比)。当添加更多数据时,该索引开始使用,但性能损失仍然存在。强制关闭索引可使查询降低到8秒。我正在使用的查询看起来像:

select count(*)

from spatial_feature

where MBRIntersects(GeomFromText('LineString(7420023 1, 7420023 1)'), location);

沿Y方向输入的数据非常密集(想像一下,就像您已经记录了每条建筑物,电话亭,邮政信箱和鸽子在很长路上的位置一样)。我已经测试了R-Indexes在Java中如何处理此数据,以及该领域中的其他人已成功将它们应用于平面文件格式。但是,没有人将它们应用于数据库AFAIK,这是此测试的目标。

向沿特定轴并不是完全不同的空间模型添加大量数据时,有没有人看到过类似的行为?如果我反转坐标用法,问题仍然存在。如果这是原因,我正在运行以下设置

MacOS 10.6.6

MySQL 5.1.46

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值