索引 C# 数据表以像使用 SQL 查询一样进行搜索
Posted
技术标签:
【中文标题】索引 C# 数据表以像使用 SQL 查询一样进行搜索【英文标题】:Indexing a C# Datatable to search like you would with a SQL query 【发布时间】:2021-03-29 20:44:47 【问题描述】:我在 Stack Overflow 中找不到任何类似的问题
有没有办法在内存中创建一个带有索引的虚拟 SQL 数据库?或者可能是用于在数据表上创建索引以多次快速搜索表中的列的内置函数?尝试将表 A 的每一行与表 B 中的索引条目进行比较(而不是针对表 A 中的每一行完全循环遍历表 B 的每一行)。
现在我正在创建一个字典
这在尝试在另一个表中查找确切值时有效,但如果我想执行比较并找到所有大于特定值的 int 键则无效。我可能会用排序的二叉搜索树重新发明***(特别是因为表数据是静态的),但我宁愿使用现有的解决方案,而不会有引入我自己的代码错误的风险。
【问题讨论】:
您为什么要创建一个在内存中具有索引的虚拟 SQL 数据库?你有一些“衡量”的性能问题吗? 我正在使用数据表并希望有效地搜索它们(它们又是由 SQL 查询构建的)。构建一个通用系统,允许将 2 个 SQL 查询作为参数传入(针对两个不能直接相互通信的独立数据库运行),每个表中的特定列是要比较的关键,然后是任何其他匹配的列比较查询以确保它们匹配。目前,每次运行要比较的行数为数百万。但我也想对第二列执行值检查,以防找不到匹配项。 所有查询和比较都需要 10-20 分钟才能运行,我只想使用现有的工具/包来提高效率。 使用排序的List<T>
和BinarySearch
可能吗?
因此,您从索引良好(或至少可索引良好)的环境(数据库)中获取数据到非索引内存数据中,然后您发现缺少索引。听起来像是需要重新评估的设计。
【参考方案1】:
创建内存中的 SQLite 数据库,然后您就可以使用它的所有优点。 https://sqlite.org/inmemorydb.html
【讨论】:
以上是关于索引 C# 数据表以像使用 SQL 查询一样进行搜索的主要内容,如果未能解决你的问题,请参考以下文章