结构集筛选哪个快?

问题描述

我懒得测试了,想请大家帮忙测试下,并发下理性、有效的性能测试过程及结论。问题:从数据库里查询一个小型表(万级以下)或中型表(万级以上,百万以下),全取出结果。再多的数据,就不符合场景了,不在这里讨论。把结果集存入缓存,这样之前开关SQL的IO的效率就可以忽略了,不在这讨论。下面对结构集做筛选操作的几种方法进行讨论研究。1、存入DataSet的DataTabledt中。用dt.select("col1like'%xxx%'")筛选结构。2、存入DataSet的DataTabledt中。用dt.DefaltView.Filter="col1like'%xxx%'";3、存入List<类mode>lst中。用lst.where(o=>o.col1.indexof(xxx)>=0).toList()4、linq或EF的相应操作,我相信更慢,(这个结论对吧?)有测试过程最好。比较上面4种方法哪种效果高?1、要结论2、有测试过程数据,更给分3、小型表和中型表结论是否一致?4、如果DataTable设了主键,会否提高筛选效率?

解决方案

解决方案二:
另外,还有啥更高效存结果集的方式(.Net环境内,程序中),也可以谈谈。nosql/或框架上的建议就不要过多讨论了。
解决方案三:
没有测试,根据多年的.Net开发经验:如果只进行一次查询,从空间利用和查询时间上,我倾向于第3种方法。如果要进行多次查询,从查询效率和架构设计上,我倾向于直接从数据库查询,利用查询字段的数据库索引。
解决方案四:
引用2楼fungchou的回复:

没有测试,根据多年的.Net开发经验:如果只进行一次查询,从空间利用和查询时间上,我倾向于第3种方法。如果要进行多次查询,从查询效率和架构设计上,我倾向于直接从数据库查询,利用查询字段的数据库索引。

肯定是要频繁遍历该表,又要like,用不了数据库的索引。又因为知道数据库io开销肯定比放缓存里,遍历结果集小。才提出这问题。关键是,1、2、3哪个更快?
解决方案五:
我只凭经验说一下。一首先1比2要快,dataView慢是出名的。二3和1比较的话,我个人偏向于3可能快。三你既然用了like并且%前置,那么索引就无效了
解决方案六:
Redis不能算?叫我弄的话,首先DataSet不会作为内存存储的方式,我还是会选择List<Entity>的方式,这样更能预先进行排序(其实你可以认为就是主键作用了),然后适用各种查找算法(甚或者直接Hash来做映射)其实上面都是扯淡,不同的查询条件,对应的插法不同,你硬要脱离数据库,其实也就是放弃了索引这个利器,而还想要效率的话,那也就是你自己要在程序里实现“索引”(算法),因为算法是可预料的,所以实际可能效率上还会高于“索引”至于测试、结论啥的,拜托,你好歹也是SQL版蓝花,没有任何约束限制条件的测试有何意义?
解决方案七:
Trie图
解决方案八:
楼主,就单次执行时间而言,你认为最慢的,恰恰是最快的。因为你把全部数据加载到datatable或list的时间就远超直接查询获得结果的时间。如果不算数据加载到内存的时间,第三种最快,因为list是强类型的,少了类型转换的时间
解决方案九:
肯定3最快而且肯定不应该是这样的o=>o.col1.indexof(xxx)>=0
解决方案十:
我只从你的帖子看到几点:1.你不知道像drt.select(...)、dataview.Filter=....这类字符串要付出代价去进行语法解释和临时编译,而产生的结果其实就模仿3、4。2.你不知道Linq其实为何物,你竟然不知道3中的where(....)就是linq,而4中的“linq或EF”也是linq。3.你不知道有索引和无索引的区别。你不懂“主键”跟你的那个查询表达式有没有什么关系?!4.你没有动手能力。连写个7、8代码的测试都动不动就说“我懒得测试了”。5.你比较喜爱发帖。贴别是拿不出自己的测试代码,但是忽悠别人的帖子。你可能是很适合博客园的那种发文章的风格。
解决方案十一:
我还是强调一次,动手测试是最基本的“素质”。写上7、8行代码产生测试数据,然后分别写上2行代码就能测试DataTable筛选表达式和Linq查询所需要耗费的时间值几分钱?!面对最基本的两个信手拈来的查询表达式,不动手,只支嘴儿,这样的状态通常都不是你真实地在进行一个费时几个月的研发中,而是你只想临时起意想一个办法靠写一点点文字而赚一点关注的时候。

时间: 2025-01-25 12:09:59

结构集筛选哪个快?的相关文章

市场结构转型期的厚积快发

文 / 王 晨 "我是一架印钞机!" 当年牛根生从伊利失业后到其他企业应聘时,非控股不干.面对当时一穷二白.毫无实力的老牛,老板们无一例外都拒绝了他的这个狂妄之举.他们觉得牛根生的要求是个笑话,于是牛根生用这句话回敬他们. 而事实证明了这并不是一句疯话. 蒙牛1999年成立,销售收入从0.37亿元飙升到213.18亿元,只用了8年时间,年平均增长速度365%,在香港上市之后,股票市值迅猛上涨,创造出数名亿万富翁.数十名千万富翁和数百名百万富翁,史称火箭速度. 牛根生牛吗?当然比你我牛.

c语言 结构体函数:PHP的语言结构和函数的区别

相信大家经常看到对比一些PHP应用中,说用isset() 替换 strlen(),isset比strlen执行速度快等.例子: if ( isset($user) ) { //do some thing }原因是isset是语言结构,而strlen是一个函数.还有echo 是个语言结构,不是个函数.那什么是语言结构呢?它和函数有什么不同吗?1. 什么是语言结构和函数语言结构:就是PHP语言的关键词,语言语法的一部分:它不可以被用户定义或者添加到语言扩展或者库中:它可以有也可以没有变量和返回值.函

codis集群部署实战

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://navyaijm.blog.51cto.com/4647068/1637688 一.概要 1.折腾codis集群已经快两个月了,感谢一直以来codis的作者刘奇和黄东旭的耐心支持,在这里给你们点个赞,现在我司已经有一个业务跑在了codis集群上,目前只是切了整个业务的10%的量,预计下周会全量切到codis上,这个时候大家肯定特别想知道codis稳定吗?有没有什么bug啊,你想知

redis集群

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询. Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU ev

Facebook数据仓库揭秘:RCFile高效存储结构

本文介绍了Facebook公司数据分析系统中的RCFile存储结构,该结构集行存储和列存储的优点于一身,在MapReduce环境下的大规模数据分析中扮演重要角色. Facebook曾在2010 ICDE(IEEE International Conference on Data Engineering)会议上介绍了数据仓库Hive.Hive存储海量数据在Hadoop系统中,提供了一套类数据库的数据存储和处理机制.它采用类SQL语言对数据进行自动化管理和处理,经过语句解析和转换,最终生成基于Had

Java中使用阻塞队列控制线程集实例_java

队列以一种先进先出的方式管理数据.如果你试图向一个已经满了的阻塞队列中添加一个元素,或是从一个空的阻塞队列中移除一个元素,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具.工作者线程可以定期的把中间结果存到阻塞队列中.而其他工作者线程把中间结果取出并在将来修改它们.队列会自动平衡负载.如果第一个线程集运行的比第二个慢,则第二个线程集在等待结果时就会阻塞.如果第一个线程集运行的快,那么它将等待第二个线程集赶上来. 下面的程序展示了如何使用阻塞队列来控制线程集.程序在一个目录及它的所有子目

Weblogic集群配置(原创)

系统环境 主机结构 集群信息 创建集群 在主机rac1执行config.sh $ ./config.sh -mode=console <------------------- BEA WebLogic Configuration Wizard -------------------> Welcome: -------- Choose between creating and extending a domain. Based on your  selection, the Configurat

如何通过自动化Kubernetes集群管理容器

许多开发者已经求助于Docker容器来实现云端和本地的新应用迭代时的一致性,而且很多应用都要依赖多个Docker容器的编排.而围绕着容器集的启动以及为了让它们能够协作而连带的相关设置和配置又引发了一系列新的挑战. 为了弥补这一差距,软件产业一直在向容器管理系统Kubernetes靠拢,它承担了生态体系的职能,实现对容器集的自动化部署.在旧金山举行的KubeCon会议上,专家们讨论了其中一些基于Kubernetes的集群自动化部署的最佳实践和工具. Univa工程总监Cameron Brunner

港交所日前开会讨论是否将检讨上市公司股权结构

11月1日上午消息 港交所日前开会讨论是否将检讨上市公司股权结构,允许阿里巴巴以多重股权的"合伙人制"上市,外界预期今年底至明年初有机会展开咨询.港府财经事务及库务局局长陈家强今天表示,市场应该就可能出现的改变对政策作出讨论,但交易所及相关机构要保持监管素质,不能只因为全球市场之间的竞争令香港市场的素质降低. 据港交所人士透露,对于检讨上市公司股权结构一事,港交所此前已经开过两次会议进行讨论,上月29日召开了第三次会议,这次会议虽然依然没有定下咨询的具体时间表,但是在此议题上"