【问题标题】:What is the best way to index lookups on a 2D array of integers that is boundless in x and y?在 x 和 y 中无限的整数的二维数组上索引查找的最佳方法是什么?
【发布时间】:2016-01-15 03:46:51
【问题描述】:

假设您有一个由整数点组成的二维网格的数据模型。该网格在 x 和 y 上分布稀疏且无边界(最大为 32 位整数)。

索引这些点以便在任意 (x,y) 坐标上进行优化查找的最佳方法是什么?是否可以使用 O(1) 查找解决方案?

【问题讨论】:

  • 对数据库有什么要求?我在纯代码中有一个非常节省内存的 O(1) 实现,也可以序列化到磁盘。 X 和 Y 理论上可以达到±无穷大。
  • 糟糕,这应该是 O(Log n) 但是对数的底数太高了,几乎是恒定的时间

标签: database optimization 2d big-o


【解决方案1】:

您可以有一个包含 3 列的表:XCoord、YCoord 和 Value。 PK 将在 XCoord 和 YCoord 上,这将尽可能快地进行查找。还有,既然是PK,就只有一个读:不用查索引再去读数据页:索引就是数据页。

我不确定您如何计算 SQL 查找的 O 值,但如果您保持索引统计信息为最新并定期对其进行碎片整理,那么这与您将获得的 O(1) 一样接近。

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 1970-01-01
    • 2020-05-13
    • 2016-04-26
    • 2020-08-11
    • 2014-03-05
    • 1970-01-01
    • 2015-10-11
    • 2020-06-27
    相关资源
    最近更新 更多