c# 关于某管理业务系统对数据统计问题.

2023-10-17 14:13

本文主要是介绍c# 关于某管理业务系统对数据统计问题.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.业务系统主要的就是功能的稳定,流畅性.

最近客户提出某统计功能数据加载到页面很慢.反映到运维工程师处,运维跟我说之后我(研发),

         我看了看代码,有几处代码确实需要优化,统计功能调用了4次服务端,每一次客户端调用服务端的时候返回结果3S左右,有三次调用服务端,一共大约耗时6S左右,(VS2022打断点有代码执行时间)

.然后做了SQL语句优化, 客户端点按钮到整体数据显示在容器里面需要半分钟.

C#   计时器

//引用
using System.Diagnostics;Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();.....代码....stopwatch.Stop();//写入日志Log.Write("外面日志时间:" + stopwatch.ElapsedMilliseconds / 1000);

最后发现是一处代码有很大问题.用了foreach(){  foreach(){}  }    双循环, 简直就是依托答辩,屎山, 里面foreach 一次需要40ms,循环7次,  但是最外面的foreach 需要循环50次左右,   循环里面也没有调用接口,但是有一处需要使用缓存里面的数据(上万条),就这一个双循环就要 十几秒,之前没出现问题是因为数据量小,未出现严重的bug.

我将整个功能都调整了一遍,系统显示还是慢,测试新查询的统计功能直接在我手上腰斩了,我又将功能整体放在了存储过程中(存储过程的代码图我就不贴了,怕被告),用了几个小时写好了, 查询出来的结果用了不到0~2S,大大提升了系统的效率,仅查询功能性能提升了14倍左右,奉劝大家,只要关于统计相关的功能,建议使用存储过程.  

系统里面有很多统计功能,所有的都没有使用存储过程或视图,基本都在服务端SQL 拼接,用的是.net2 或.net4 服务端没有使用所谓的异步,客户端使用了Thread也只是防止系统假死, 某球用, 老系统版本升级  此路任重而道远.

不说了还有几个统计要改.

这篇关于c# 关于某管理业务系统对数据统计问题.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/225938

相关文章

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I