问题假设是这样的,假设数据库里的一张表有1万条记录,表里有个字段的值为0,1.
id status
111 1
222 0
333 1
444 1
... ...
有这样一万条记录。主要目的是我想把status字段为0和1的区分成两堆
假设现在有两种操作:
1.一次性从数据库读出一万条记录,返回在逻辑层,或UI层进行判断,把0,1字段的值进行分堆。
2.分两次读取数据,一次是status=0的,一次是status=1的。
我想问下大家在实际开发中回到过这样的问题吗,如果遇到了您会怎么解决呢?
先说下我的观点,
我个人觉的还是读取数据库来的方便些,但是不知道性能上会有什么差别,希望高手能给予数据加以强有力的说明,谢谢!
id status
111 1
222 0
333 1
444 1
... ...
有这样一万条记录。主要目的是我想把status字段为0和1的区分成两堆
假设现在有两种操作:
1.一次性从数据库读出一万条记录,返回在逻辑层,或UI层进行判断,把0,1字段的值进行分堆。
2.分两次读取数据,一次是status=0的,一次是status=1的。
我想问下大家在实际开发中回到过这样的问题吗,如果遇到了您会怎么解决呢?
先说下我的观点,
我个人觉的还是读取数据库来的方便些,但是不知道性能上会有什么差别,希望高手能给予数据加以强有力的说明,谢谢!
您在B/S里读一万笔记录?这样不实现吧针对你的方法一:
可以返回一个DataSet或DataTable,然后用它们的内置的方法,筛选出适合的数据:
DataRow[] rows1=DataTable.Select("Status=0");DataRow[] rows2=DataTable.Select("Status=1");这样可避免每笔记录判断分堆操作,简单些.针对您的方法二,直接用Select语句:
select * from table where status=0
select * from table where status=1直接把返回值填入DataSet,不用读两次.
理论上来讲,方法二会快些.
这样对数据库的操作比较少,
如果你每次只需要一组数据的话,建议每次只读一组数据,并iqekeyi 把status 设置索引,这样较快查找速度
select * from table where status=1
这样更好
就执行操作来说,区别不大
楼主如果数据量太大,应该使用数据缓存技术 降低服务器负担
具体看情况,没有一概而论的.
但速度快不代表消耗就小,还是上面那句话,把压力给谁的问题.