我有一个存储嵌套集的表。它存储由集合区分的不同嵌套集(是的,我在这里混合术语,真的应该是嵌套的)。看起来有点像这样:
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 and MBRContains函数。使用MySQL 5.1
答案 0 :(得分:0)
对于单维数据(这些是1d间隔,对吧?),存在比r树更好的索引结构。这些设计用于2-10维的动态数据(在更高的维度,性能不太好,因为拆分策略和距离功能不再适用)
实际上对于您的用例,经典SQL应该可以很好地工作。数据库可以有效地利用其索引。拥有良好的索引结构是一回事,但您希望让数据库尽可能地利用它拥有的索引。
因此,我只需索引leftEdge
和rightEdge
以及<, <=, >, >=
函数。他们很快!对于collectionid列,位图索引应该是好的。