将sql代码速度变快
时间:2011-12-12
来源:互联网
请高手帮忙把这段代码的速度变快,万分感谢~~
SQL code
SQL code
select cast((cast(((cast((count(P0.act_power_value1)+ count(P1.act_power_value1) + count(P2.act_power_value1)+ count(P3.act_power_value1)+ count(P4.act_power_value1)) as float)/(nullif(cast((count(P0.act_power_value2)+ count(P1.act_power_value2) + count(P2.act_power_value2)+count(P3.act_power_value2)+ count(P4.act_power_value2)) as float),0)))*100)as decimal(18,1)))as Nvarchar)+'%' from(SELECT LOCALTIME as LOCALTIME FROM [DB_EasyPilot].[dbo].[WCI0NGNVSV7E48G] )as TIME_STAMP LEFT OUTER JOIN(SELECT(case when ActivePower>0 then ActivePower else null end ) as act_power_value1,ActivePower As act_power_value2, LocalTime As tstamp_value from [DB_EasyPilot].[dbo].[WCI0NGNVSV7E48G] where WindSpeed >= 3.5 AND WindSpeed <25)as P0 on time_stamp.LOCALTIME =P0.tstamp_value LEFT OUTER JOIN(SELECT (case when ActivePower>0 then ActivePower else null end ) as act_power_value1,ActivePower As act_power_value2, LocalTime As tstamp_value from [DB_EasyPilot].[dbo].[WCI0NHNVSV3E48G] where WindSpeed >= 3.5 AND WindSpeed <25) as P1 on time_stamp.LOCALTIME =P1.tstamp_value LEFT OUTER JOIN(SELECT (case when ActivePower>0 then ActivePower else null end ) as act_power_value1,ActivePower As act_power_value2, LocalTime As tstamp_value from [DB_EasyPilot].[dbo].[WCI4NHNVSV3E48G] where WindSpeed >= 3.5 AND WindSpeed <25) as P2 on time_stamp.LOCALTIME =P2.tstamp_value LEFT OUTER JOIN(SELECT (case when ActivePower>0 then ActivePower else null end ) as act_power_value1,ActivePower As act_power_value2, LocalTime As tstamp_value from [DB_EasyPilot].[dbo].[WCI4NHNVSV7E48G] where WindSpeed >= 3.5 AND WindSpeed <25) as P3 on time_stamp.LOCALTIME=P3.tstamp_value LEFT OUTER JOIN(SELECT (case when ActivePower>0 then ActivePower else null end ) as act_power_value1,ActivePower As act_power_value2, LocalTime As tstamp_value from [DB_EasyPilot].[dbo].[WCI4NGNVSV3E4AG] where WindSpeed >= 3.5 AND WindSpeed <25)as P4 on time_stamp.LOCALTIME =P4.tstamp_value where LOCALTIME >='01/12/2011' and LOCALTIME <'02/12/2011'
作者: xuersweety 发布时间: 2011-12-12
连接字段加索引。
作者: fredrickhu 发布时间: 2011-12-12
LEFT OUTER JOIN(SELECT (case when ActivePower>0 then ActivePower else null end )
每个子查询都由这个 应该可以合并在一起
每个子查询都由这个 应该可以合并在一起
作者: fredrickhu 发布时间: 2011-12-12
(SELECT (case when ActivePower>0 then ActivePower else null end )
as act_power_value1,ActivePower As act_power_value2, LocalTime As tstamp_value
from [DB_EasyPilot].[dbo].[WCI0NHNVSV3E48G]
where WindSpeed >= 3.5 AND WindSpeed <25)
这写都有重复的们为什么要连接这么多次,可以考虑放到临时表里
SQL code
as act_power_value1,ActivePower As act_power_value2, LocalTime As tstamp_value
from [DB_EasyPilot].[dbo].[WCI0NHNVSV3E48G]
where WindSpeed >= 3.5 AND WindSpeed <25)
这写都有重复的们为什么要连接这么多次,可以考虑放到临时表里
SQL code
(SELECT (case when ActivePower>0 then ActivePower else null end ) as act_power_value1,ActivePower As act_power_value2, LocalTime As tstamp_value into #tb from [DB_EasyPilot].[dbo].[WCI0NHNVSV3E48G] where WindSpeed >= 3.5 AND WindSpeed <25) --用#tb 去关联
作者: ssp2009 发布时间: 2011-12-12
一空是5个表,每个表中的列名都相同,取这五个表里的数据求的一个百分比。
不能用临时表,临时表还需要删除。不能改动数据库,这段代码是要在excel vba里执行的
不能用临时表,临时表还需要删除。不能改动数据库,这段代码是要在excel vba里执行的
作者: xuersweety 发布时间: 2011-12-12
引用 2 楼 fredrickhu 的回复:
LEFT OUTER JOIN(SELECT (case when ActivePower>0 then ActivePower else null end )
每个子查询都由这个 应该可以合并在一起
LEFT OUTER JOIN(SELECT (case when ActivePower>0 then ActivePower else null end )
每个子查询都由这个 应该可以合并在一起
你好,能具体说下怎么合吗?
作者: xuersweety 发布时间: 2011-12-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28