心里没底,总觉得这样写sql语句不规范,数据库大了会很慢,请各位爷看看。

ruhong 2014-03-24 09:44:12

use gysys
select a.考核序号,a.录入时间,
录入人=(select 姓名 from 系统数据_员工信息 where 员工代码=a.录入人),
a.考核时间,a.检查方式,
被考核人=(select 姓名 from 系统数据_员工信息 where 员工代码=a.被考核人),
考核人=(select 姓名 from 系统数据_员工信息 where 员工代码=a.考核人),
a.绩效类别,指标名称=(select 指标名称 from 绩效管理_考核指标 where 指标序号=a.指标项) ,
a.指标项,
绩效得分=(select 分数 from 绩效管理_考核指标 where 指标序号=a.指标项),
a.状态,a.详细内容,
指标说明=(select 指标说明 from 绩效管理_考核指标 where 指标序号=a.指标项)
from 绩效管理_考核列表 a
inner join 绩效管理_抽查列表 c
on a.考核序号=c.考核序号
where c.目录序号=@目录序号
order by a.考核时间
...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2014-03-25
  • 打赏
  • 举报
回复
我一直不觉得with nolock是个好东西
發糞塗牆 2014-03-25
  • 打赏
  • 举报
回复
统计查询分析 有资源的环境下就不应该在活动库做
發糞塗牆 2014-03-25
  • 打赏
  • 举报
回复
版本控制能和with nolock相等?
引用 7 楼 feiazifeiazi 的回复:
[quote=引用 6 楼 DBA_Huangzj 的回复:] 我一直不觉得with nolock是个好东西
做统计查询分析时(不需要太精确的查询),就是个好东东。 那行版本控制,是不是好东东?[/quote]
飞啊子 2014-03-25
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
我一直不觉得with nolock是个好东西
做统计查询分析时(不需要太精确的查询),就是个好东东。 那行版本控制,是不是好东东?
ruhong 2014-03-24
  • 打赏
  • 举报
回复
引用 3 楼 u010933793 的回复:


use gysys
go

SELECT a.考核序号,a.录入时间,
                  录入人=y.姓名,
                  a.考核时间,a.检查方式, 
                  被考核人=yb.姓名,
                  考核人=yk.姓名, 
                  a.绩效类别,指标名称=j.指标名称,
                  a.指标项, 
                  绩效得分=j.分数, 
                  a.状态,a.详细内容,
                  指标说明=j.指标说明  
                  FROM 绩效管理_考核列表 a INNER JOIN 绩效管理_抽查列表 c  ON a.考核序号=c.考核序号 
LEFT JOIN 系统数据_员工信息 y ON  y.员工代码=a.录入人 
LEFT JOIN 系统数据_员工信息 yb ON yb.员工代码=a.被考核人 
LEFT JOIN  系统数据_员工信息 yk ON yk.员工代码=a.考核人 
LEFT JOIN 绩效管理_考核指标 j ON  j.指标序号=a.指标项 
WHERE c.目录序号=@目录序号
ORDER BY a.考核时间

谢谢。
ruhong 2014-03-24
  • 打赏
  • 举报
回复
引用 2 楼 ap0405140 的回复:
建议: 1.将子查询变为inner join. 2.绩效管理_考核列表.考核序号上应有索引. 3.绩效管理_抽查列表.考核序号,目录序号上应有索引. 4.表名之后应可加(nolock),避免锁阻塞.
版主大人,给我写个具体的语句出来吧,我很笨啊,包括你说的nolock, 我依葫芦画瓢就好了。
BzTech_123 2014-03-24
  • 打赏
  • 举报
回复


use gysys
go

SELECT a.考核序号,a.录入时间,
                  录入人=y.姓名,
                  a.考核时间,a.检查方式, 
                  被考核人=yb.姓名,
                  考核人=yk.姓名, 
                  a.绩效类别,指标名称=j.指标名称,
                  a.指标项, 
                  绩效得分=j.分数, 
                  a.状态,a.详细内容,
                  指标说明=j.指标说明  
                  FROM 绩效管理_考核列表 a INNER JOIN 绩效管理_抽查列表 c  ON a.考核序号=c.考核序号 
LEFT JOIN 系统数据_员工信息 y ON  y.员工代码=a.录入人 
LEFT JOIN 系统数据_员工信息 yb ON yb.员工代码=a.被考核人 
LEFT JOIN  系统数据_员工信息 yk ON yk.员工代码=a.考核人 
LEFT JOIN 绩效管理_考核指标 j ON  j.指标序号=a.指标项 
WHERE c.目录序号=@目录序号
ORDER BY a.考核时间

唐诗三百首 2014-03-24
  • 打赏
  • 举报
回复
建议: 1.将子查询变为inner join. 2.绩效管理_考核列表.考核序号上应有索引. 3.绩效管理_抽查列表.考核序号,目录序号上应有索引. 4.表名之后应可加(nolock),避免锁阻塞.
LongRui888 2014-03-24
  • 打赏
  • 举报
回复
如果你的子查询,都是一对一的,那么可以修改为join的,这样更加规范

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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