首页 新闻 会员 周边

代码效率问题?

0
[已解决问题] 解决于 2016-11-08 10:04

现在要两种条件的数据集合,一种方法是 写一条SQL查询 一个表的所有数据,转换成List,再用List的Where方法 筛选两种数据 ,另一种方法是 写两条带Where的SQL语句 直接分别查两种数据  , 一个查一次但是数据多,一个查两次但是数据少,哪种方法更快呢!

Leo96的主页 Leo96 | 初学一级 | 园豆:166
提问于:2016-11-07 17:05
< >
分享
最佳答案
2

建议使用第二种方式:

1.数据量小的情况下,第一种和第二种方式的无明显差异,没必要考虑效率问题;

2.数据量大时,由于数据库IO、网络、内存等各方面因素的影响,第一种方案会给服务器带来非常大的压力且速度也比第二种方案慢,且数据库也可以做一些针对性的索引,同时建议分页获取。

奖励园豆:5
TeaPet | 菜鸟二级 |园豆:318 | 2016-11-08 09:54
其他回答(3)
1

不知道的问题加点测试数据跑跑就知道了

明显sql语句的效率高些,好控制,数据量大可以建索引等

皓月空 | 园豆:723 (小虾三级) | 2016-11-07 17:08
2

如果第一种查询的数据量在千条以下的时候,我觉得第一种快,反之第二种快

当然,这个千是我猜测的,你可以试试到底数据量达到多少的时候第二种更快、

反正数据少的时候第一种快!

刘宏玺 | 园豆:14020 (专家六级) | 2016-11-07 17:10
2

这个问题是相对的,你db如果压力大,查一次和查两次差别就很恐怖了。另一方面,如果你list数据多(相当多),你在内存区筛(包括取数据,创建对象,将数据转成对象)这些可能耗时也不低(或者给gc添加负担)。

但一般情况下,数量一般的(数据不多,db压力不大)情况下,肯定前一种快,后一种再快也是毫秒级的。

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-07 17:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册