sql性能优化之多表联查
先贴上我优化后的核心代码:
select * into #result from (
select p.AchivementCount,isnull(a.ByAttentionCount,0) ByAttentionCount, u.Id,u.FullName,j.Name PostionName,u.ProfessionId,u.Disabled,u.UserName,u.ResearchArea,u.PositionId,u.DepartmentId,u.ORCID,d.DepartmentName, isnull(r.SCIIndex, 0) SCICount, isnull(e.EIIndex, 0) EICount,ISNULL(g.SCIOrEIIndex,0) SCIOrEICount
from IdentityUser u
inner Join #AchivementCountComputer p on u.Id=p.SuspectedId
LEFT JOIN Department d ON d.Id = u.DepartmentId
LEFT JOIN JobPosition j ON u.PositionId=j.Id
left join #ByAttentionCountComputer a on a.ByAttentionID=u.Id
left JOIN #SCIIndexComputer r ON u.ID = r.SuspectedID
LEFT JOIN #EIIndexComputer e ON u.ID = e.SuspectedID
LEFT JOIN #SCIOrEIIndexComputer g ON u.ID = g.SuspectedID
where u.ProfessionId=(select Id from JobProfession where Name='教师') and u.Disabled=0 and p.AchivementCount>0
) re
优化前的代码是用视图写的,每张临时表又是一个多表查询。不仅难以阅读,而且放到服务器上,web页面加载不出来,由此可见,速度不是慢,是太慢了,在sqlserver中单独执行,大约在40s-55s之间。
优化的方式:
1、查看sql语句,尽量简化代码,有个清晰的结构。由于业务复杂,于是sql语句难免复杂,但是从代码易读性上考虑,可以优化代码结构。比如我们可以用cte。
2、查看sqlserver执行计划,图十分复杂,看的人眼花缭乱。看这图,得从右边向左边看,慢慢分析,看主要性能耗费在哪个环节上。
3、查看I/O统计
sql性能优化之多表联查的更多相关文章
- Oracle SQL性能优化 - 根据大表关联更新小表
需求: 小表数据量20w条左右,大表数据量在4kw条左右,需要根据大表筛选出150w条左右的数据并关联更新小表中5k左右的数据. 性能问题: 对筛选条件中涉及的字段加index后,如下常规的updat ...
- SQL性能优化常见措施(Lock wait timeout exceeded)
SQL性能优化常见措施 目 录 1.mysql中explain命令使用 2.mysql中mysqldumpslow的使用 3.mysql中修改my.ini配置文件记录日志 4.mysql中如何加索引 ...
- SQL性能优化案例分析
这段时间做一个SQL性能优化的案例分析, 整理了一下过往的案例,发现一个比较有意思的,拿出来给大家分享. 这个项目是我在项目开展2期的时候才加入的, 之前一期是个金融内部信息门户, 里面有个功能是收集 ...
- SQL性能优化
引言: 以前在面试的过程中,总有面试官问道:你做过sql性能优化吗?对此,我的答复是没有.一次没有不是自己的错误,两次也不是,但如果是多次呢?今天痛下决心,把有关sql性能优化的相关知识总结一下,以便 ...
- 如何进行正确的SQL性能优化
在SQL查询中,为了提高查询的效率,我们常常采取一些措施对查询语句进行SQL性能优化.本文我们总结了一些优化措施,接下来我们就一一介绍. 1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE ...
- SQL Select count(*)和Count(1)的区别和执行方式及SQL性能优化
SQL性能优化:http://www.cnblogs.com/CareySon/category/360333.html Select count(*)和Count(1)的区别和执行方式 在SQL S ...
- 如何进行SQL性能优化
在SQL查询中,为了提高查询的效率,我们常常采取一些措施对查询语句进行SQL性能优化.本文我们总结了一些优化措施,接下来我们就一一介绍. 1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE ...
- 关于SQL性能优化的十条经验
1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 解决办法: 其实只需要对该脚本略做改进,查询速度便会 ...
- ORACLE数据库学习之SQL性能优化详解
Oracle sql 性能优化调整 ...
随机推荐
- 8、flask之flask-script组件
Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任 ...
- golang 实现简单的一致性哈希
package main import ( "fmt" "sort" "hash/crc32" ) var serverMap map[ui ...
- C#实现七牛云存储
云存储,就是把本地的资源文件存放至网络上,可以公网访问.相当于网盘功能,感觉非常方便. 这里介绍的是七牛云存储.有兴趣的可以去官方网站详看 根据官网的介绍,本身是提供SDK的,下载地址,大家可以根据自 ...
- 35 个 jQuery 小技巧
1. 禁止右键点击 $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return ...
- 项目构建工具Maven
- 删除表中的所有记录 ID从1开始
TRUNCATE TABLE 删除表中的所有行,而不记录单个行删除操作.语法TRUNCATE TABLE nameTRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相 ...
- web3 - BOM&DOM
一.BOM (浏览器对象模型) 浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器"对话". Window 对象 1.window.onresize // 1 w ...
- web1 - HTML&CSS
Brackets 编辑器的安装和使用 Emmet:HTML/CSS代码快速编写 HTML && CSS
- Mysql基准测试详细解说(根据慕课网:《打造扛得住Mysql数据库架构》视频课程实时笔录)
什么是基准测试 基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以及评估变化对性能的影响. 我们可以这样认为:基准测试是针对系统设置的一 ...
- 如何架构一个合适的企业API网关
API Gateway(API GW / API 网关),顾名思义,是出现在系统边界上的一个面向API的.串行集中式的强管控服务,这里的边界是企业IT系统的边界,主要起到隔离外部访问与内部系统的作用. ...