【发布时间】:2015-08-14 12:04:46
【问题描述】:
情况如下。
我有一些对象包含:
- 一个起始
long - 结尾
long -
string代码
这些对象longs 是连续的。
例如:
var obj1 = new {From = 0, To = 16777215, Code = "aaa"};
var obj2 = new {From = 16777216, To = 16777471, Code = "bbb"};
有近 150.000 个这样的对象。
目前我将所有内容都存储在 SQL 表中。
问题是我需要从这个列表中搜索。例如,我需要查找编号为 16777470 的对象,即对象 2“bbb”。
问题:有没有一种有效的方法可以将如此多的对象存储在内存中,并能够在其中寻找元素,并寻找最近的元素?
【问题讨论】:
-
在排序列表上,二分查找可以工作。
-
即使对象平均为 50 字节,总共也不到 8MB:适合许多当代 CPU 的缓存。 IE。不大。
-
而且它需要在内存上是必要的?因为在 SQL 上有有效的方法来做到这一点。
-
它现在已经在 SQL 中了,但我很害怕,因为这种查找每分钟会发生数千次,我不想让已经高度请求的数据库过载:) .