【发布时间】:2018-11-06 01:12:05
【问题描述】:
我的应用程序是用 C# 编写的,从数据库中加载了超过 100 万行。出于某种原因,我必须执行此初始加载,然后我将在加载的行中搜索而不是查询 SQL,并且每一列都有大数据(每行大约 500 个字符)并且每列都有不同的类型。对于搜索,我必须检查所选记录中的数据与其他记录中的 3 个特定列的相等性。
我认为使用二叉搜索树可以快速完成,因为现在,使用嵌套 for 循环(2 个循环)需要几分钟。如果我可以将数据放入正确的结构中,则将 HashCode 设为 3 列将创建唯一的整数数据并将其放入 BST。
我不知道任何结构适合这个假设。 主要问题是,这个假设是否正确?还是只是做梦?
【问题讨论】:
-
在启动时创建的简单查找应该可以完成这项工作 - 请参阅 LINQ ToLookup
-
所以结果索引很聪明?如果某些列是文本,那么索引仍然保持可以搜索的顺序?
-
For some reason您能告诉我们为什么要在内存中而不是在数据库中进行操作吗? -
您可能没有使用加载到 SQL Server 中的同一数据库。您不应该在连接字符串中包含 mdf 文件,这是一个常见错误。您应该只连接到打开 SQL Server Management Studio (SSMS) 时看到的 SQL Server 数据库实例。
标签: c# sql binary-search-tree hashcode large-data