以最快的方式选择 2 个 bigint 值之间的记录 - 所以使用 c# 对象而不是查询数据库

Posted

技术标签:

【中文标题】以最快的方式选择 2 个 bigint 值之间的记录 - 所以使用 c# 对象而不是查询数据库【英文标题】:select records between 2 bigint values fastest way - so use c# objects instead of querying database 【发布时间】:2012-12-23 01:32:59 【问题描述】:

好的,我有一个包含 2 bigint 列的表。

例子

val1 3213 12312
val2 13232 32322
.
.
.

select val from table where 3232 between col1 and col2

我需要使用 between 运算符来选择单行数据。

现在我尝试了dataview,但失败了。 Dataview 不支持between 运算符。

喜欢这个

dwIpAddress.RowFilter = string.Format("0 between CodeVal_1 and CodeVal_2", irParameter);

那么我可以使用哪种方法?

大约有 200000 条数据记录。

试过了,超级慢

    dwIpAddress.RowFilter = string.Format("CodeVal_1>= 0 and CodeVal_2<=0", irParameter);

C# 4.0

【问题讨论】:

【参考方案1】:

你试过了吗

    dwIpAddress.RowFilter = string.Format("CodeVal_1 <= 0 and 0 <= CodeVal_2", irParameter);

此外,由于您提到您使用的是 C# 4.0,因此您可以使用实体框架来代替 DataView。你可能想研究的东西。

此外,如果您的 DataView 包含数据库表中的所有记录,那么您可能需要调整查询,使其仅从数据库中获取所需的行,而不是返回所有行,然后在 C# 中进行过滤(如果这就是你正在做的)

【讨论】:

您是否尝试过直接对数据库运行相同的 sql 查询?如果是这样,那也很慢吗?你的数据库有索引吗? 是的,即使我有索引,查询数据库也很慢。我必须查询超过 500000 次。我需要以某种方式提供可用于应用程序 RAM 内存的索引方案。像哈希表或字典。 该表上的索引是什么样子的。也许您试图获取与您的 between 语句相关的范围的字段不是索引的一部分.. 您可以显示列表或解释什么索引是 ..? 索引可以是什么?当然,这两个值的组合是主键。所以它是最快的索引。

以上是关于以最快的方式选择 2 个 bigint 值之间的记录 - 所以使用 c# 对象而不是查询数据库的主要内容,如果未能解决你的问题,请参考以下文章

Spark SCALA - 连接两个数据帧,其中一个数据帧中的连接值位于第二个数据帧中的两个字段之间

PhoneGap iOS UIPicker 等效元素:以编程方式选择选项值

PyMongo 光标列出可能的最快方式

创建批处理并将函数应用于python列表的内存高效且最快的方法

以编程方式在“更多”中选择一个 tabbaritem

在 2 个日期之间选择值