以最快的方式选择 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 等效元素:以编程方式选择选项值