如何优化我的程序

静_心 2018-01-16 09:23:29
如何优化我的程序
用的方法是NHibernate里的Query,每次添加记录时都去Query一次是否存在记录,若存在,则跳过,不存在继续添加,用的是FOR遍历,添加记录,100条,用时13秒
各位有优化的好主意吗?
...全文
526 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2018-01-24
  • 打赏
  • 举报
回复
用事务或者存储过程。
正怒月神 2018-01-24
  • 打赏
  • 举报
回复
你应该把100条记录,先整个到sql中查询是否存在, 然后直接把不存在数据 dbcontext.表.add 加载到上下文,最后savechange 我不清楚你查询存在的方式是不是一条条查询 我也不清楚你的循环是怎么弄的,一条条savechange?
圣殿骑士18 2018-01-24
  • 打赏
  • 举报
回复
判断是否存在不要用count(*),那是全表搜索,用select top 1,并保证查询列是主键或者建立了索引。
AKA小手冰凉 2018-01-24
  • 打赏
  • 举报
回复
用类似LINQ 的except方法
秋的红果实 2018-01-23
  • 打赏
  • 举报
回复
不知道NHibernate是什么,也不清楚用for怎么循环的 如果数据量小,可以一次性将所有 有重复嫌疑的列调入内存,例如加入list,排序,采用二分法查找就快了 如果数据量大,就提交sql语句给数据库,select keyColumn from table where ...,也没什么好办法 不论哪种情况,都要给嫌疑重复列加上聚集索引 还有一种,仅供参考:将嫌疑重复列设置成唯一主键,不检查重复,直接插入,通过try catch,捕获到exception的自然是已经存在
五更琉璃 2018-01-23
  • 打赏
  • 举报
回复
只能说 NHibernate 楼主还没有 学会,学会就好了
qq_37753824 2018-01-23
  • 打赏
  • 举报
回复
那么慢 直接自己写sql 多好。
sdfgrtyu 2018-01-16
  • 打赏
  • 举报
回复
用any啊,,,,,,
xuzuning 2018-01-16
  • 打赏
  • 举报
回复
如果不是 每次添加记录时都去Query一次是否存在记录 的话,用时多少? 其实只要在你检查重复的列上做唯一索引,就不需要你去检查了(虽然数据库会报违反唯一性错误,但这并不影响程序的执行)
by_封爱 版主 2018-01-16
  • 打赏
  • 举报
回复
我虽然不了解hibernate 不过 100条 也就是200条sql语句.. 能用13秒?? 这也太夸张了吧. 不过如果是我 我会先在内存里操作出来一个表 然后用sql那个复制的组件弄进去 ..
Jason_Mao1 2018-01-16
  • 打赏
  • 举报
回复
我的建议是你先把主键遍历出来,分成两部分 1 如果存在更新操作 2 不存在插入 。用主键就可以知道那些存在哪些不存在。然后批量操作。这样应该比较快一些。希望能帮助到你。
  • 打赏
  • 举报
回复
先批量插入一张临时表,然后再两表关联,没有的插入你的表

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧