代码优化 protected virtual PlatformCustomerRecordExcel QueryExcel(SearchCompanyByProjectReq input, StringBuilder sql) { PlatformCustomerRecordExcel result = new PlatformCustomerRecordExcel(); using (var db = GetReadDb()) { var list = new PagedResult<SearchPlatformCustomerResult>(); string where = sql.ToString(); string order = input.OrderBy.IsNotEmpty() ? $" ORDER BY {input.OrderBy} " : ""; db.Ado.ExecuteCommand($@"create TEMPORARY table tem_pids ( select b.PID,b.CompanyName,b.OrganizationCode,bi.DetailedAddress,bi.OperationState from MallDataBase.Platform_BusinessMain b inner join {TABLE_NAME} c on b.PID=c.CompanyId INNER JOIN malldatabase.platform_businesslicense bi on b.PID=bi.PID where b.IsDelete=0 and bi.IsDelete=0 and c.IsDelete=0 {where} {order} )"); result.PlatforCompanyData = db.SqlQueryable<PlatforCompanyData>($@" select * from tem_pids ").ToList(); result.PlatforCompanyFinancing = db.SqlQueryable<PlatforCompanyFinancing>($@" select f.CompanyID,f.FinancingTime,f.FinanceScale,f.FinanceMode,f.Shareholder from tem_pids t INNER JOIN crmdatabase.view_company_years_financing f on t.PID=f.CompanyId where not f.FinanceMode like '%退市%' ").ToList(); result.PlatforCompanyTag = db.SqlQueryable<PlatforCompanyTag>($@" select etl.CompanyID,etl.Tagid from tem_pids t INNER JOIN malldatabase.view_ent_tagrelation_list etl on t.PID=etl.CompanyId ").ToList(); } return result; }
时间: 2024-02-10 10:35:27 浏览: 73
详解C++中StringBuilder类的实现及其性能优化
这段代码中存在一些可以进行优化的地方:
1. 使用StringBuilder拼接SQL语句可能存在性能问题,可以考虑使用ORM框架或者Dapper等工具包来优化SQL语句的拼接。
2. 在查询数据之前,可以先进行参数校验和数据过滤,避免不必要的数据查询。
3. 在临时表的创建和查询数据的过程中,可以考虑使用事务,以确保数据的一致性和完整性。
4. 在查询数据的过程中,可以使用异步查询和分页查询等技术来提高查询效率和减少内存占用。
5. 可以对查询结果进行缓存,以避免重复查询和提高响应速度。
阅读全文