MySQL在同一个表中存储不同的嵌套集
我有一个存储嵌套集的表。它存储由collectionid区分的不同嵌套集(是的,我在这里混合了术语,实际上应该是nestedsetid)。看起来有点像这样:MySQL在同一个表中存储不同的嵌套集,mysql,data-structures,dataset,nested-sets,r-tree,Mysql,Data Structures,Dataset,Nested Sets,R Tree,我有一个存储嵌套集的表。它存储由collectionid区分的不同嵌套集(是的,我在这里混合了术语,实际上应该是nestedsetid)。看起来有点像这样: id | orgid | leftedge | rightedge | level | collectionid 1 | 123 | 1 | 6 | 1 | 1 2 | 111 | 2 | 3 | 2 | 1 3 | 23 | 4
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树索引,但是我看到的代码:LineString(Point(-1,leftedge),Point(1,rightedge))
不太有效,因为它没有考虑collectionid,而这个id:1和id:6最终是相同的
有没有一种方法可以将R树索引与当前设置一起使用。。。当然,在同一个表中可以有不同的嵌套集?我的主要目标是能够使用这些函数。使用MySQL 5.1处理一维数据(这些是1d区间,对吗?)存在比r树更好的索引结构。这些都是为2-10维的动态数据设计的(在更高的维上,性能不太好,因为分割策略和距离函数不再有效) 实际上,对于您的用例,经典SQL应该工作得很好。数据库可以有效地利用其索引。拥有一个好的索引结构是一回事,但是您希望让数据库尽可能好地利用它拥有的索引 因此,我只需要索引
leftEdge
和rightEdge
以及=
函数。他们很快!对于collectionid列,位图索引应该很好