gpt4 book ai didi

c# - 通过范围内的多个参数搜索对象的高效设计

转载 作者:太空狗 更新时间:2023-10-29 23:50:06 26 4
gpt4 key购买 nike

我在内存中有一组相同类型的对象,每个对象都有多个不可变的 int 属性(但不仅仅是它们)。

我需要在那里找到一个(或多个)属性在指定值附近的小范围内的对象。例如。 a == 5+-1 && b == 21+-2 && c == 9 && 任意 d

存储对象的最佳方式是什么,以便我可以像这样高效地检索它们?

我考虑过为每个属性制作 SortedList 并使用 BinarySearch 但是我有很多属性所以我想有一个更通用的方法而不是那么多 排序列表

重要的是集合本身不是不可变的:我需要添加/删除项目的能力。

对象(不仅仅是数据)是否有内存数据库之类的东西?

最佳答案

稍微扩展一下@j_random_hacker 的回答:“估计选择性”的常用方法是为索引构建直方图。但是,您可能已经凭直觉知道哪个标准会产生“a == 5+-1 && b == 21+-2 && c == 9”中的最小初始结果集。它很可能是“c == 9”,除非“c”的重复值数量特别多且潜在值的范围很小。

因此,对谓词的简单分析将是一个简单的起点。平等条件很可能是最具选择性的(表现出最高的选择性)。

从那时起,RDBMS 将对结果集中的记录进行顺序扫描,以过滤剩余的谓词。这可能也是您的最佳方法。

或者,有任意数量的内存中、占用空间小且支持 SQL 的 DBMS 可以为您完成繁重的工作(eXtremeDB、SQLite、RDM,... google 是您的 friend )和/或具有较低级别的接口(interface)不会为您完成所有工作(仍然是大多数),但也不会将 SQL 强加给您。

关于c# - 通过范围内的多个参数搜索对象的高效设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35119697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com