代码优化 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 17:35:27 浏览: 77
这段代码中存在一些可以进行优化的地方:
1. 使用StringBuilder拼接SQL语句可能存在性能问题,可以考虑使用ORM框架或者Dapper等工具包来优化SQL语句的拼接。
2. 在查询数据之前,可以先进行参数校验和数据过滤,避免不必要的数据查询。
3. 在临时表的创建和查询数据的过程中,可以考虑使用事务,以确保数据的一致性和完整性。
4. 在查询数据的过程中,可以使用异步查询和分页查询等技术来提高查询效率和减少内存占用。
5. 可以对查询结果进行缓存,以避免重复查询和提高响应速度。
相关问题
优化这段代码 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(); result.PlatforCompanyData = db.SqlQueryable<PlatforCompanyData>($@" 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} ").OrderByIF(input.OrderBy.IsNotEmpty(), input.OrderBy).ToList(); result.PlatforCompanyFinancing = db.SqlQueryable<PlatforCompanyFinancing>($@" select f.CompanyID,f.FinancingTime,f.FinanceScale,f.FinanceMode,f.Shareholder from MallDataBase.Platform_BusinessMain b inner join {TABLE_NAME} c on b.PID=c.CompanyId INNER JOIN crmdatabase.view_company_years_financing f on b.PID=f.CompanyId where b.IsDelete=0 and c.IsDelete=0 {where} and not f.FinanceMode like '%退市%' ").ToList(); result.PlatforCompanyTag = db.SqlQueryable<PlatforCompanyTag>($@" select etl.CompanyID,etl.Tagid from MallDataBase.Platform_BusinessMain b inner join {TABLE_NAME} c on b.PID=c.CompanyId INNER JOIN malldatabase.view_ent_tagrelation_list etl on b.PID=etl.CompanyId where b.IsDelete=0 and c.IsDelete=0 {where} and not f.FinanceMode like '%退市%' ").ToList(); } return result; }
这段代码可能存在的优化点如下:
1. 使用异步操作:这段代码中的数据库操作是同步的,可能会影响程序的性能。可以考虑使用异步操作来提高程序的性能。
2. 减少 SQL 查询次数:这段代码中使用了多个 SQL 查询,可以考虑将多个查询合并成一个查询,从而减少 SQL 查询次数,提高程序的性能。
3. 减少重复代码:这段代码中多次使用了相同的查询条件,可以考虑将相同的查询条件提取出来,放在一个变量中,从而减少重复代码。
4. 避免使用 LIKE 操作符:这段代码中使用了 LIKE 操作符,这可能会影响程序的性能。可以考虑使用其他操作符替代 LIKE 操作符。
5. 使用缓存:这段代码中每次查询都会访问数据库,可以考虑使用缓存来减少对数据库的访问,提高程序的性能。
6. 使用 LINQ:这段代码中使用了 SQL 语句进行查询,可以考虑使用 LINQ 来进行查询,从而提高代码的可读性和可维护性。
综上所述,可以在代码中进行上述优化,以提高程序的性能和可维护性。
阅读全文