我有一个带有ID的表,以及以毫秒为单位的开始和结束时间1..0.....153..23....30诸若此类。我有一个查询find records with range of 18 and 28。查询将选择时间范围涵盖从查询时间开始的行。对于上述查询,record 2 and 3是有效的。上面的查询不会返回任何内容。因此,我添加了一条额外的语句。我的问题是验
您可以使用什么数据结构作为索引(或哪种算法)来提高以下查询的性能?在最坏的情况下(很少有对象匹配范围X,或者匹配位于记录/索引的末尾),这就变成了O(m),对于大型数据集,m不够好。
具有按排序的记录(或索引):执行二进制搜索,直到找到匹配范围X的第一个对象。扫描并创建与范围匹配的所有k对象的引用数组。按B对数组进行排序,返回第一个N。那是O(log m + k + k log k)。适配2/1:对范围X的第一次匹配执行二进制搜索(使用A上的索引);对范围