社区
C#
帖子详情
c# 一个for循环速度太慢的问题
雪绒花痴
2021-03-03 04:17:34
一个for循环,循环的值都要在sqlserver数据库进行查询验证是否有无。
能成功循环,就是一旦循环的值多了速度就会很慢,有什么不改变验证数据库的前提下,进行加快速度
...全文
3713
21
打赏
收藏
c# 一个for循环速度太慢的问题
一个for循环,循环的值都要在sqlserver数据库进行查询验证是否有无。 能成功循环,就是一旦循环的值多了速度就会很慢,有什么不改变验证数据库的前提下,进行加快速度
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
冰思雨
2021-03-09
打赏
举报
回复
1
优化步骤: 1. 建立数据库连接池,不要每次操作都建立和关闭数据库连接。 每个连接,数据库端都会有操作的缓存以及数据的缓存,可以优化你的SQL执行效率。 新的连接里面没有上几次执行的语句和数据,无法让数据库进一步的进行优化。 2. 循环体中每次查询都只能查出一条数据,可以重新设计查询语句,一次性将循环体中所有要查询的数据查出来。 一个循环体要执行100次的循环,每次循环都查询出一条记录。 可以改为,循环之前,一次性查出一百个记录,然后,循环体中逐个处理查询结果。 这样做,在逻辑上是等价的,但是,效率上会更高,省去了99次的交互和查询过程。 3. 如果不能一次性查出所有循环体中需要的记录(实际上是可以一次性全查询出来的),还有一种优化的方向, 看看目标表中 b_deal=0 的记录条数有多少,如果少于几百上千条的话,可以一次性读取到内存当中,将这些数据进行缓存, 然后,循环体内就不用再查了,直接从内存中访问。 当然了,这种方案在这里是并不推荐的,因为步骤2是可以实现的。两者异曲同工。
xinw_liu1111
2021-03-08
打赏
举报
回复
寻址方法不好。。
小沐CA
2021-03-08
打赏
举报
回复
其一,速度都耽误在闭合上面了,可以用批量处理的方式来处理循环。其二就是换掉if循环
小沐CA
2021-03-08
打赏
举报
回复
其一,速度都耽误在闭合上面了,可以用批量处理的方式来处理循环。其二就是换掉if循环
xiaoxiangqing
2021-03-08
打赏
举报
回复
可以把语句拼接起来,用in来代替
m0_55844471
2021-03-07
打赏
举报
回复
努力vis提升自己vulnerable
心蓝168
2021-03-06
打赏
举报
回复
由于已知从哪个表查询,还有查询条件i的值已定,可以直接先把查询出来,然后再循环处理number的值。 即:select boxindex/100 from dbo.Meter_** where b_deal=0 and boxindex in (.......),这样就可以只操作一次数据,然后再循环求number的值
千秋的秋千丶
2021-03-05
打赏
举报
回复
如何增加积分啊?
duangufei
2021-03-05
打赏
举报
回复
直接用in查询,boxindex in('XXXX'),外面循环拼接XXX,一条sql语句就都出来了
changjiangzhibin
2021-03-05
打赏
举报
回复
一般情况下,数据量特别大的需要另外处理。一次查出所有数据,然后根据条件在查出的数据中进行筛选和处理
三人行我
2021-03-05
打赏
举报
回复
sql里的merge into
正怒月神
2021-03-04
打赏
举报
回复
先说说,你要实现的是什么
datafansbj
2021-03-04
打赏
举报
回复
建议使用如下算法:
1、将循环体的值先保存到 DataTable 中
2、开启数据库事务
3、在数据库中建立临时表
4、使用 SqlBulkCopy 组件将 DataTable 的数据一次性导入到数据库的临时表
5、使用 SQL 语句处理临时表的数据
6、将处理的结果使用 SQL 查询出来
7、提交事务
所有需要多次与数据库交互的场景均可以使用上述机制处理,比循环交互快得多。
不会打字的猫
2021-03-04
打赏
举报
回复
你先把数据查出来,在外面判断,或者写个存储过程,在过程里面判断,你这循环一次连一次~不慢也得慢了
xugq979
2021-03-03
打赏
举报
回复
1、循环前 把需要的数据查出来(数据量级不是很大的前提)。 2、循环内 用查出来的数据集进行 有效性验证。 这样 数据库只查询一次。
much0726
2021-03-03
打赏
举报
回复
数据库的开关是比较耗时间的,可以考虑多语句,或者存储过程,一次性提交
大葡萄八块一斤
2021-03-03
打赏
举报
回复
直接搞个存储过程,你传递下minnum跟maxnum参数,让存储过程去验证返回结果,还有你的sdr根本没用。。。每一遍都执行了两次select语句。
石岩Maple
2021-03-03
打赏
举报
回复
一些没必要的计算和判断用代码来做,减少查询数据库的次数,速度自然上来了
石岩Maple
2021-03-03
打赏
举报
回复
用批处理语句,不要每次循环就查一个,查100次和查1次效率肯定不一样
真相重于对错
2021-03-03
打赏
举报
回复
不要频繁打开关闭数据库连接
加载更多回复(1)
c#
datagrid操作,解决datagridView加载慢.docx
发现了datagridview直接绑定DataSource加载数据比较慢的
问题
,从网上找了很多资料,没有有效的解决方案,
For
循环
优化,提升效率
前言 我们都经常使用一些
循环
耗时计算的操作,特别是for
循环
,它是一种重复计算的操作,如果处理不好,耗时就比较大,如果处理书写得当将大大提高效率,下面总结几条for
循环
的常见优化方式。 首先,我们初始化
一个
集合 list,如下: List<String> list = new ArrayList<String>(); 方法一:最常规的不加思考的写法 ...
C#
For Unity系列之基础篇
本套
C#
语言教程,全部采用案例化教学模式。结合
C#
知识点在实际游戏中具体的应用场景,让初级学员快速、深入的学好
C#
语言,为进一步全面、高效的学习Unity游戏引擎,制作精良的游戏产品,打下坚实的语言基础! 真正学好Unity,其先决条件是一定要有稳固、扎实的编程基础!因此目前绝大多数(线下)Unity培训机构(一般4-5个月)都会先给学员讲解
C#
for Unity 的编程加强课程。(一般高校的编程课程内容少、不深入...) 本套《
C#
for Unity》课程共分为“入门篇”、“基础篇”、“中级篇”、“进阶篇”,分别对应于完全“零”编程基础、较少编程基础、需要强化
C#
编程、需要深入学习
C#
脚本,等各类型学员群体。 说明: 本课程使用Virtual Studio2012,以及Unity5.2 进行开发与讲解。(学员使用更高版本,对学习影响不大) 一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《
C#
For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《
C#
For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《
C#
For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《
C#
For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979
C#
中
循环
结构的效率
问题
C#
中
循环
结构的效率
问题
引言顺序、选择、
循环
是一切程序的三大结构。今天我们就来说一说
循环
中的
一个
小
问题
。内容
c#
的
循环
结构有四种:for while…do… do…while… foreach 在这四种结构中,都有
循环
结束的判断。大于某个数字,小于某个数字,或者是其他条件表达式的判断。今天我们就说一下关于数字的判断。我们的数字
C#
DataTable数据量大,
循环
处理数据的时候优化
速度
相信大家用for
循环
datatable数据的不会太少,这个在数据量比较小的时候可以接受,但是数据量大的时候却会造成CPU占用过高,甚至把电脑资源耗尽卡死至无限等待,其实一些
循环
耗时的操作可以用线程池分块来处理,这样会减轻CPU很多压力,好比食堂打饭,当只有
一个
窗口的时候势必等待的时间会非常的长,但是多开几个窗口的时候却大大提高效率,
C#
中用线程池就可以做到,本来一开始的时候我用的是为每个区块开
一个
C#
110,477
社区成员
642,563
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章