给出一个数据集,您将只在运行时知道相关字段。我想选择每行数据以通过循环进行分析。更好:
运行直接sql查询以通过直接打开和关闭数据库来每次获取行
在循环之前将所有适用的行拉入数据表,然后通过linq从循环内部选择它们
例如,我正在读取一个文件,该文件显示查找ab和c行,然后我的查询变为“从表WHERE col1 ='a'或col1 ='b'或col1 ='c的SELECT col1,col2,col3 '” 但是我不知道只有在我运行程序之后,编译期间才会是a,b,c
谢谢
编辑:在术语,速度和最佳实践方面都更好
答案 0 :(得分:0)
取决于分析所花费的时间,基础事务锁定(如果有)以及通过将结果集保存在db服务器上而阻塞的资源是1还是2 ...但是对于我来说2似乎不太可能(长时间打开的巨大结果集会耗尽数据库系统上的内存,仅此一项就意味着您应该重新考虑整个数据处理工作流)...我只是在运行时构建SQL,这是甚至有可能直接对您的数据库使用linq(请参阅“实体框架”),并且只有在运行后遇到严重的性能问题时,我才进行重构...
答案 1 :(得分:0)
StackOverflow并不是真正针对“更好”类型的问题,因为它们通常是高度主观的/基于观点/引出论点的。.但是,我们可以自由决定是否应回答主观问题,这是那些(我认为)可以
我断言,在99%的情况下,最好将数据保留在数据库中并使用数据库中内置的SQL功能进行查询。原因是数据库是专门为存储和查询数据而构建的。得出这样的结论是有点荒谬的,它是对资源的充分利用:将1亿行通过网络传输到设计欠佳的数据存储容器中,然后使用循环在天真地搜索它(这是linq in当您可以将其留在当前驻留的专用,索引良好,功能强大的高性能企业级软件(在企业级硬件上)上,并要求检索这些记录的一小部分时,便会出现循环一个(慢速的)网络链接进入受限制的电源客户端