繁体   English   中英

MySQL在同一张表中存储不同的嵌套集

[英]MySQL Storing different nested sets in same table

我有一个存储嵌套集的表。 它存储由collectionid区分的不同嵌套集(是的,我在这里混合术语,实际上应该是nestedsetid)。 它看起来像这样:

id | orgid | leftedge | rightedge | level | collectionid
1  | 123   |  1       |  6        |  1    |   1
2  | 111   |  2       |  3        |  2    |   1
3  |  23   |  4       |  5        |  2    |   1
4  |  67   |  1       |  2        |  1    |   2
5  | 123   |  3       |  4        |  1    |   2
6  | 600   |  1       |  6        |  1    |   3
7  |  11   |  2       |  5        |  2    |   3
8  | 111   |  3       |  4        |  3    |   3

最初我想利用R-Tree索引,但是为此我看到的代码: LineString(Point(-1, leftedge), Point(1, rightedge))不会完全起作用,因为它不需要考虑到collectionid,则此id :1和id :6最终将是相同的。

有没有一种方法可以在当前设置中使用R-Tree索引?当然,您可以在同一张表中使用不同的嵌套集吗? 我的主要目的是能够使用MBRWithin和MBRContains函数。 使用MySQL 5.1

对于一维数据(这些间隔为1d,对吗?),存在比r树更好的索引结构。 这些是为2-10维的动态数据而设计的(在较大的维上,性能不太好,因为拆分策略和距离函数不再很好用)

实际上,对于您的用例,经典SQL应该可以很好地工作。 数据库可以有效地利用其索引。 拥有良好的索引结构是一回事,但是您希望数据库尽可能利用它具有的索引。

这样,我只索引leftEdgerightEdge以及<, <=, >, >=函数。 他们很快! 对于collectionid列,位图索引应该很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM