[英]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应该可以很好地工作。 数据库可以有效地利用其索引。 拥有良好的索引结构是一回事,但是您希望数据库尽可能利用它具有的索引。
这样,我只索引leftEdge
和rightEdge
以及<, <=, >, >=
函数。 他们很快! 对于collectionid列,位图索引应该很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.