返回第一个不是null的值,Server中查询当天

 

Coalsece 返回第一个不是null的值

  

select top 5 [objname]

      ,[objjc]

      ,[objorder]

      ,[objid]

      ,[parentid]

      ,[grade]

      ,[type]

      ,[href]

      ,coalesce( [rel],0) rel

      FROM [Menu]



  select top 5 [objname]

      ,coalesce( [rel],'0') rel

      FROM [Menu]

     order by NEWID()



       select top 5 [objname]

      , rel

      FROM [Menu]

     order by NEWID()

 

 (1) 通过实例级别查出CXPACKET的等待时间包括总等时间,平均等待时间,最大等待时间。

--当天:

select * from T_news where datediff(day,addtime,getdate())=0

--最近三天:

select * from T_news where datediff(day,addtime,getdate())<= 2 and datediff(day,addtime,getdate())>= 0

--本周:

select * from T_news WHERE (DATEPART(wk, addtime) = DATEPART(wk, GETDATE())) AND (DATEPART(yy, addtime) = DATEPART(yy, GETDATE()))

--注意:此时不能用 datediff 差值为7,因为,datediff只表示间隔数

--本月:

select * from T_news WHERE (DATEPART(yy, addtime) = DATEPART(yy, GETDATE())) AND (DATEPART(mm, addtime) = DATEPART(mm, GETDATE()))

--最近一个月:

select * from T_news WHERE (DATEPART(yy, addtime) = DATEPART(yy, GETDATE())) 
AND ((DATEPART(mm, addtime) = DATEPART(mm, GETDATE())) OR (31-DATEPART(DD,addtime)+DATEPART(DD, GETDATE()))<=31)

--本季度:

select * from T_news where DATEPART(qq, addtime) = DATEPART(qq, GETDATE()) and DATEPART(yy, addtime) = DATEPART(yy, GETDATE())

 (2) 查看并行的前十条语句 (这种查询不建议使用,因为条件是查找含有并行parallel的执行计划,查询响应很慢)。

  图片 1

 图片 2

1.4  控制CXPACKET并行度

SELECT TOP 10
        p.* ,
        q.* ,
        qs.* ,
        cp.plan_handle
FROM    sys.dm_exec_cached_plans cp
        CROSS APPLY sys.Dm_exec_query_plan(cp.plan_handle) p
        CROSS APPLY sys.Dm_exec_sql_text(cp.plan_handle) AS q
        JOIN sys.dm_exec_query_stats qs ON qs.plan_handle = cp.plan_handle
WHERE   cp.cacheobjtype = 'Compiled Plan'
        AND p.query_plan.value('declare namespace p="http://schemas.microsoft.com/SQL Server/2004/07/showplan";
max(//p:RelOp/@Parallel)', 'float') > 0
OPTION  ( MAXDOP 1 )

 (6)  当执行计划发现并不需要用并行执行时,强制sql 使用OPTION ( MAXDOP x) 也不会采用并行执行。

   1.1   查询 CXPACKET的等待

最后考虑调整并行度的开销阈值或降低并行度。

  借助上一次性能调优的资源等待统计图,会发现等待时间最长的就是CXPACKET类型。

  并行处理的优势: 用多个线程来执行一个指令,当sql server发现一条指令复杂时或语句中含有大数据量要处理,此时执行计划会决定用多个线程并行来执行,从而提高整体响应时间,例如一个指令读入100w条记录, 如果用一个线程做 可能需要10秒, 如果10个线程来做 可能只需要1秒,加上线程间同步时间也不过2秒。

 1.2  模拟CXPACKET的并行处理 

本文由澳门新葡亰平台官网发布于数据库,转载请注明出处:返回第一个不是null的值,Server中查询当天

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。