在数据库类数据结构中高效实现AND

时间:2011-02-07 17:30:45

标签: database data-structures

我可以想象如何在某些列上实现一个简单的数据库和索引 - 只需将这些列值保存在某种平衡树中。

这个问题是关于如何有效实施AND查询?你会如何实现像

这样的东西
SELECT * FROM points WHERE x > 0 and x < 4 and y > 10 and y < 14

请注意,对于二维查询,我并没有具体询问数据库,而是在实践中哪种数据结构最适合这种情况。我记得有一次关于Range Trees的研究 - 这是解决这个问题的现实世界吗?

1 个答案:

答案 0 :(得分:0)

您可以使用常规搜索树非常有效地执行此操作...

你也可以在O(N)中执行此操作,扫描整个数据,这是我猜大多数数据库大多数时间都在做的事情。特别是考虑到指数的成本。

这是大多数数据库中支持的最常见和最简单的索引:http://en.wikipedia.org/wiki/B-tree所以如果你在索引中寻找一个范围,它相对容易优化......

顺便考虑一下,你也希望数据库能够理解你正在寻找范围并根据它进行优化,因为AND通常表示你只需要两个条件....