优化啊,优化啊啊啊啊!

qq_15126639 2018-01-18 03:17:11

create VIEW [dbo].[view_T_J_DJXMJFMX]
AS

select a.id,us.id usid,us.user_no,us.name user_name,us.pinyin,us.pinyinFirst,e.XMJFJE,
us.user_cata,d.id YHLXBH,d.ZDYMC,dept.code dept_code,dept.name dept_name,A.XMID,B.XMMC,
cast(CONVERT(CHAR(10),A.FYRQ,120)as varchar(10)) AS FYRQ,
e.id as ZFFSID, e.ZFFSBH,e.ZFFSMC, CONVERT(VARCHAR, e.CZRQ, 120) JFRQ,
CASE SIGN(e.XMJFJE) WHEN - 1 THEN '退费' ELSE '缴费' END AS JFBZ,a.org_id ,org.name as org_name
from T_J_DJFYB a
inner join sys_organization org on org.id = a.org_id
inner join T_J_DJXMB b on a.xmid=b.id
INNER JOIN
(
select FYXMID,XMJFJE, ZFFSID,CZRQ,RZBZ,f.id, f.ZFFSBH,f.ZFFSMC from T_J_DJFYMXB dj
INNER JOIN T_J_DJZFFSB f ON dj.ZFFSID = f.id
union all
select FYXMID,XMHJJE as XMJFJE ,ZFFSID,CZRQ,'1',f.id, f.ZFFSBH,f.ZFFSMC as RZBZ from T_J_DJXMHJMX dm
INNER JOIN T_J_DJZFFSB f ON dm.ZFFSID = f.id

) e ON A.id = e.FYXMID
left join sys_user us on a.YHID = us.id
inner join sys_dept dept on us.dept_id = dept.id
inner join T_B_YHLXFB d on us.user_cata=d.id
inner join T_B_YHLX c on d.YHLXID=c.id
WHERE b.XMLX = '1' and e.RZBZ='1'


GO

这是视图的创建语句, 之前发的贴感觉都优化蒙了。。。从头开始。

(104330 行受影响)
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'T_J_DJXMHJMX'。扫描计数 1,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'T_J_DJFYMXB'。扫描计数 1,逻辑读取 3974 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'T_J_DJZFFSB'。扫描计数 1,逻辑读取 2 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'sys_dept'。扫描计数 0,逻辑读取 317952 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'T_B_YHLX'。扫描计数 0,逻辑读取 317952 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'T_B_YHLXFB'。扫描计数 0,逻辑读取 317952 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'sys_user'。扫描计数 0,逻辑读取 317952 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'T_J_DJXMB'。扫描计数 0,逻辑读取 525441 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'T_J_DJFYB'。扫描计数 46,逻辑读取 998 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'sys_organization'。扫描计数 1,逻辑读取 6 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。


这个视图要怎么优化 提高查询效率?
...全文
965 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_15126639 2018-02-05
  • 打赏
  • 举报
回复
引用 8 楼 yenange 的回复:
[quote=引用 6 楼 qq_15126639 的回复:] @_大约在冬季_ 这样就6秒,但是不能重复执行啊 临时表这方面不怎么懂要怎么操作? 我想直接建立个视图做查询,这段可以实现吗。
之所以让你直接贴出最后需要查询的语句, 而不是贴这个视图, 是因为: 你这个视图根本没有筛选数据, 根本没有办法优化, 没有任何意义。 所谓的优化, 都是万里挑一。 一万就得出九千九, 那还挑什么?不用挑了。 A. 全中国14亿人里, 找出身份证号为 4xxxxxxxxxxxxxx0 这一个人出来, 排好了序, 就是秒秒钟的事。 B. 全中国14亿人里, 找出所有用过手机的人, 容易吗? 挑出来站都没地方站。 记住最终的结果集不能大, 大了就没办法优化。 你要优化的, 只能是最终需要查询的SQL, 而不是这个视图, 这个视图相当于一个表, 没有优化价值了。 [/quote] 恩恩 谢谢, 学到了。
吉普赛的歌 2018-01-30
  • 打赏
  • 举报
回复
引用 6 楼 qq_15126639 的回复:
@_大约在冬季_ 这样就6秒,但是不能重复执行啊 临时表这方面不怎么懂要怎么操作? 我想直接建立个视图做查询,这段可以实现吗。
之所以让你直接贴出最后需要查询的语句, 而不是贴这个视图, 是因为: 你这个视图根本没有筛选数据, 根本没有办法优化, 没有任何意义。 所谓的优化, 都是万里挑一。 一万就得出九千九, 那还挑什么?不用挑了。 A. 全中国14亿人里, 找出身份证号为 4xxxxxxxxxxxxxx0 这一个人出来, 排好了序, 就是秒秒钟的事。 B. 全中国14亿人里, 找出所有用过手机的人, 容易吗? 挑出来站都没地方站。 记住最终的结果集不能大, 大了就没办法优化。 你要优化的, 只能是最终需要查询的SQL, 而不是这个视图, 这个视图相当于一个表, 没有优化价值了。
吉普赛的歌 2018-01-30
  • 打赏
  • 举报
回复
引用 6 楼 qq_15126639 的回复:
@_大约在冬季_ 这样就6秒,但是不能重复执行啊 临时表这方面不怎么懂要怎么操作? 我想直接建立个视图做查询,这段可以实现吗。
A. 6秒能不能满足你的需要? B. 视图没办法用临时表, 有需要的地方只能用存储过程里面加上这段代码了。
qq_15126639 2018-01-30
  • 打赏
  • 举报
回复
@_大约在冬季_ 这样就6秒,但是不能重复执行啊 临时表这方面不怎么懂要怎么操作? 我想直接建立个视图做查询,这段可以实现吗。
吉普赛的歌 2018-01-24
  • 打赏
  • 举报
回复
SELECT * 
INTO #tmpA
FROM (
	      SELECT a.id,
                  a.FYRQ,
                  a.XMID,
                  a.org_id,
                  a.YHID,
                  FYXMID,
                  XMJFJE,
                  ZFFSID,
                  dj.CZRQ,
                  RZBZ,
                  f.id AS f_id,
                  f.ZFFSBH,
                  f.ZFFSMC
           FROM   T_J_DJFYB a
                  INNER JOIN T_J_DJFYMXB dj
                       ON  dj.FYXMID = a.id
                  INNER JOIN T_J_DJZFFSB f
                       ON  dj.ZFFSID = f.id
           WHERE  dj.RZBZ = '1'
           UNION ALL 
           SELECT a.id,
                  a.FYRQ,
                  a.XMID,
                  a.org_id,
                  a.YHID,
                  FYXMID,
                  dm.XMHJJE  AS XMJFJE,
                  ZFFSID,
                  dm.CZRQ,
                  '1',
                  f.id       AS f_id,
                  f.ZFFSBH,
                  f.ZFFSMC   AS RZBZ
           FROM   T_J_DJFYB a
                  INNER JOIN T_J_DJXMHJMX dm
                       ON  dm.FYXMID = a.id
                  INNER JOIN T_J_DJZFFSB f
                       ON  dm.ZFFSID = f.id
) AS t;
CREATE CLUSTERED INDEX ix_#tmpA_1 ON #tmpA(org_id,xmid,YHID);

SELECT a.id,
       us.id                             usid,
       us.user_no,
       us.name                           USER_NAME,
       us.pinyin,
       us.pinyinFirst,
       a.XMJFJE,
       us.user_cata,
       d.id                              YHLXBH,
       d.ZDYMC,
       dept.code                         dept_code,
       dept.name                         dept_name,
       A.XMID,
       B.XMMC,
       CAST(CONVERT(CHAR(10), A.FYRQ, 120)AS VARCHAR(10)) AS FYRQ,
       a.f_id                         AS ZFFSID,
       a.ZFFSBH,
       a.ZFFSMC,
       CONVERT(VARCHAR, a.CZRQ, 120)     JFRQ,
       CASE SIGN(a.XMJFJE)
            WHEN - 1 THEN '退费'
            ELSE '缴费'
       END                            AS JFBZ,
       a.org_id,
       org.name                       AS org_name
FROM   #tmpA a
       INNER JOIN sys_organization org
            ON  org.id = a.org_id
       INNER JOIN T_J_DJXMB b
            ON  a.xmid = b.id
            AND b.XMLX = '1'
       LEFT JOIN sys_user us
            ON  a.YHID = us.id
       INNER JOIN sys_dept dept
            ON  us.dept_id = dept.id
       INNER JOIN T_B_YHLXFB d
            ON  us.user_cata = d.id
       INNER JOIN T_B_YHLX c
            ON  d.YHLXID = c.id  
这样需要多少秒?
qq_15126639 2018-01-24
  • 打赏
  • 举报
回复
引用 2 楼 yenange 的回复:
[quote=引用 1 楼 qq_15126639 的回复:] @_大约在冬季_ 大佬再救一波
直接查视图没有任何意义, 你还是把需要查询的语句贴出来吧[/quote]
select a.id,us.id usid,us.user_no,us.name user_name,us.pinyin,us.pinyinFirst,a.XMJFJE,
	us.user_cata,d.id YHLXBH,d.ZDYMC,dept.code dept_code,dept.name dept_name,A.XMID,B.XMMC,
	cast(CONVERT(CHAR(10),A.FYRQ,120)as varchar(10)) AS FYRQ, 
	a.f_id as ZFFSID, a.ZFFSBH,a.ZFFSMC, CONVERT(VARCHAR, a.CZRQ, 120) JFRQ,  
	CASE SIGN(a.XMJFJE) WHEN - 1 THEN '退费' ELSE '缴费' END AS JFBZ,a.org_id ,org.name as org_name
	from (
		select a.id,a.FYRQ,a.XMID,a.org_id,a.YHID,FYXMID,XMJFJE,  ZFFSID,dj.CZRQ,RZBZ,f.id as f_id, f.ZFFSBH,f.ZFFSMC 
		from T_J_DJFYB a 
		inner join T_J_DJFYMXB dj on dj.FYXMID = a.id
		INNER JOIN T_J_DJZFFSB f ON dj.ZFFSID = f.id
		where dj.RZBZ='1'
		union all 
		select a.id,a.FYRQ,a.XMID,a.org_id,a.YHID,FYXMID,dm.XMHJJE as XMJFJE ,ZFFSID,dm.CZRQ,'1',f.id as f_id, 
		f.ZFFSBH,f.ZFFSMC as RZBZ 
		from T_J_DJFYB a
		inner join T_J_DJXMHJMX dm on dm.FYXMID = a.id
		INNER JOIN T_J_DJZFFSB f ON dm.ZFFSID = f.id
	)a 
	inner join sys_organization org on org.id = a.org_id
	inner join T_J_DJXMB b on a.xmid=b.id and b.XMLX='1'
	left join sys_user us on a.YHID = us.id 
	inner join sys_dept dept on us.dept_id = dept.id
	inner join T_B_YHLXFB d on us.user_cata=d.id
	inner join T_B_YHLX c on d.YHLXID=c.id  
吉普赛的歌 2018-01-18
  • 打赏
  • 举报
回复
引用 1 楼 qq_15126639 的回复:
@_大约在冬季_ 大佬再救一波
直接查视图没有任何意义, 你还是把需要查询的语句贴出来吧
qq_15126639 2018-01-18
  • 打赏
  • 举报
回复
@_大约在冬季_ 大佬再救一波
内容较大,权限不够,故将内容分为六个部分,需要的请自行下载。 教程版权归原作者所有,本人只是负责搜集整理,本人不承担任何技术及版权问题。教程仅提供学习参考,不得用于商业用途,请在下载后在24小时内删除。 目录: 0001-2科技发展有限公司升级版源码 0001科技发展有限公司修正版源码 0002机械配件制造销售公司修正版源码 0003家具地板公司修正版源码 0004-1机械有限公司修正版源码 0004机械有限公司修正版源码 0005机械产品公司修正版源码 0006绿色环保集团股份有限公司优化版 0007金属材料制品公司修正版源码 0008电气股份有限公司修正版源码 0009红色风格设备有限公司修正版源码 0010蓝色仪表配件有限公司优化版 0011装修公司网站系统修正版源码 0012环保工程企业网站修正版源码 0013国际集团股份有限公司修正版源码 0014蓝色汽车配件有限公司修正版源码 0015家俱集团有限公司源码 0016典雅地板家居网站源码 0017蓝色企业网站系统二 0018国际集团机械仪器公司修正版源码次优化版 0019红色风格企业网站系统优化版 0020机械设备公司修正版源码 0021蓝色环保工程企业网站系统修正版源码 0022国际集团电子科技公司修正版源码 0023国际集团机械电子公司修正版源码 0024美工超级漂亮的ASP卫生纸公司修正版源码 0025绿色环境保护工程公司修正版源码 0026绿色环保生态园林公司修正版源码 0028蓝色机械制造科技公司优化版 0029装修装饰公司企业网站修正版源码 0030绿色风格酒店网站修正版源码 0031机械制造网站修正版源码 0032蓝色机械制造公司修正版源码 0033机械设备制造公司修正版源码 0034ASP机械制造企业修正版源码 0035红色汽车配件公司网站修正版源码 0036机械制造企业修正版源码 0037机械设备公司修正版源码 0038浅蓝色电子科技公司修正版源码 0039机械制造公司企业网站修正版源码 0040国际集团机械有限公司修正版源码 0041机械设备公司优化版 0042机械企业修正版源码 0043机械设备有限公司修正版源码 0044红色机械设备有限公司修政版源码 0045汽车配件制造公司修正版源码 0046蓝色汽配公司修正版源码 0047绿色园林环保公司优化版 0048红色机械化工公司修正版源码 0049机械设备有限公司修正版源码 0051测试完整无错的经典万能企业站程序 0052某电气工程有限公司源码 0053优乐博特自动化工程有限公司网站源码

22,299

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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