SQL窗体函數一例
需求:
MSSQL,列出服務實例中全部數據庫的例如以下信息: 數據庫ID、數據庫名、創建日期、數據文件類型、數據文件大小、數據庫總大小、文件所在路徑。
寫法(後面的百分比為所花時間占比):
-- 连接子查询 (47%)
WITH cte_TotalSize AS
(
SELECT database_id
,CAST(SUM(size) AS FLOAT)/128 AS [TotalSize(MB)]
FROM sys.master_files
GROUP BY database_id
)
SELECT a.database_id AS [DB_ID]
,b.name AS [DB_Name]
,b.create_date
,CASE a.type WHEN 1 THEN 'Log' ELSE 'Data' END AS File_Type
,CAST(a.size AS FLOAT)/128 AS [Size(MB)] -- Size以页(8 KB)为单位
,c.[TotalSize(MB)]
,a.physical_Name AS File_Path
FROM sys.master_files a
INNER JOIN sys.databases b ON a.database_id = b.database_id
INNER JOIN cte_TotalSize c ON a.database_id = c.database_id -- 标量子查询 (34%)
SELECT a.database_id AS [DB_ID]
,b.name AS [DB_Name]
,b.create_date
,CASE a.type WHEN 1 THEN 'Log' ELSE 'Data' END AS File_Type
,CAST(a.size AS FLOAT)/128 AS [Size(MB)] -- Size以页(8 KB)为单位
,(SELECT CAST(SUM(size) AS FLOAT)/128 FROM sys.master_files WHERE database_id = a.database_id) AS [TotalSize(MB)]
,a.physical_Name AS File_Path
FROM sys.master_files a
INNER JOIN sys.databases b ON a.database_id = b.database_id -- 窗体函数 (19%)
SELECT a.database_id AS [DB_ID]
,b.name AS [DB_Name]
,b.create_date
,CASE a.type WHEN 1 THEN 'Log' ELSE 'Data' END AS File_Type
,CAST(a.size AS FLOAT)/128 AS [Size(MB)] -- Size以页(8 KB)为单位
,CAST(SUM(size) OVER(PARTITION BY a.database_id) AS FLOAT)/128 AS [TotalSize(MB)]
,a.physical_Name AS File_Path
FROM sys.master_files a
INNER JOIN sys.databases b ON a.database_id = b.database_id
結果:
均得出正確結果的上面三種方法,代碼越來越少,性能卻越來越好。。
当中第三種是使用了窗体函數,相關文檔:http://msdn.microsoft.com/zh-cn/library/ms189461.aspx
SQL窗体函數一例的更多相关文章
- Math.Round函數
		
Math.Round這個函數的解釋是將值按指定的小數位數舍入,但並不就是四捨五入.這種舍入有時稱為就近舍入或四舍六入五成雙 其實在 VB, VBScript, C#, J#, T-SQL 中 Roun ...
 - Oracle排序函數Rank
		
出口給報關行出貨的時候,同一票shipment中合併多個invoice跟packing,轉出到廠商的報關系統時候,出口報關的序號會將invoice的序號做自動增加. 因為wafer會有出口給其他外包做 ...
 - js正則函數 match、exec、test、search、replace、split 使用介紹集合
		
match 方法 使用正則表達式模式對字元串執行查找,並將包含查找的結果作為數組返回. stringObj.match(rgExp) 參數 stringObj 必選項.對其進行查找的 String 對 ...
 - CopyFile函數詳解
		
CopyFile函數,文件拷贝函数.其基本結構如下: copyfile( lpcstr lpexistingfilename, // 源文件路径 lpcstr lpnewfilename, //新文件 ...
 - Python 函數 Function
		
函數最初被設計出來,是用來減輕重複 coding 一段相同的代碼,這之間只有代碼 (方法,Method) 的重用,但還沒有物件導向OO整個Object 的屬性與方法被封裝重用的概念. 函數的定義很簡單 ...
 - 嗅探、中间人sql注入、反编译--例说桌面软件安全性问题
		
嗅探.中间人sql注入.反编译--例说桌面软件安全性问题 今天这篇文章不准备讲太多理论,讲我最近遇到的一个案例.从技术上讲,这个例子没什么高深的,还有一点狗屎运的成分,但是它又足够典型,典型到我可以讲 ...
 - oracle   decode(nvl(estimate_qty,0),0,1,estimate_qty) 函數
		
oracle decode(nvl(estimate_qty,0),0,1,estimate_qty) 函數
 - js匿名函數
		
(function($){})(jquery) == (function($){})(jQuery) 实际上是匿名函数 用于存放开发插件的代码 作用(非常有用): 这种写法的最大好处是形成闭包.在(f ...
 - [读书心得]资料分页的优化,以SQL 2012的 OFFSET-FETCH为例
		
这是我的文章备份,原始出处:[读书心得]资料分页的优化,以SQL 2012的 OFFSET-FETCH为例 http://www.dotblogs.com.tw/mis2000lab/archive/ ...
 
随机推荐
- haproxy 访问www.zjdev.com 自动跳转到appserver_8001  对应的nginx
			
# # acl zjdev_7_req hdr_beg(host) -i www.zjdev.com # use_backend appserver_8001 if zjdev_7_req
 - android 破解九宫格
			
将目录切换到D:/adb目录下,命令如下 敲入命令 adb shell 然后回车,可以见到如下结果 再敲入命令cd /data/system然后回车, 再执行 rm gesture.key 回车,搞定 ...
 - 基于visual Studio2013解决C语言竞赛题之0202坐标转换
			
题目
 - HDU 1862 EXCEL次序 (排序水问题)
			
Problem Description Excel对能够记录一组由任意列排序指定.现在,请把你编译的代码类似特征. Input 測试输入包括若干測试用例. 每一个測试用例的第1行包括两个整数 N ...
 - 【LeetCode】【Python题解】Single Number & Maximum Depth of Binary Tree
			
今天做了三道LeetCode上的简单题目,每道题都是用c++和Python两种语言写的.由于c++版的代码网上比較多.所以就仅仅分享一下Python的代码吧,刚学完Python的基本的语法,做做Lee ...
 - Java NIO--初步认识
			
: 一.java NIO 和阻塞I/O的区别 1. 阻塞I/O通信模型 2. java NIO原理及通信模型 二.java NIO服务端和客户端代码实现 一.java NIO 和阻 ...
 - ZOJ 3778 Talented Chef 模拟 [ 祝愿明天省赛一帆风顺, ZJSU_Bloom WILL WIN : )
			
这题的意思是给你 n 道菜,第 i 道菜需要 Ai 步才能完成 每次你能对 m 道菜分别完成一步,请问最少需要几次? 这题暴力写肯定是不行的,去年省赛的时候就是没写出来这题,今天再把思路理一理吧. 首 ...
 - m序列产生器
			
扩频通讯中会用的到伪随机数列 —— m序列 代码中是5bit原始码 module m_generate ( clock , reset , m_code ); input clock ,reset ; ...
 - Week7(10月24日)
			
Part I:提问 =========================== 1.数据验证属性的练习. 按要求写出教室和课程的模型类. (1)教室类主键不自动增值,手工输入. (2)教室名字不超过10 ...
 - Derby的下载安装和使用,(和JAVA中使用Derby)
			
首先是Java环境变量要配置: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Fil ...