首页 新闻 赞助 找找看

这两种查询语句那种更高效?

0
[待解决问题]
select s.ID,s.SaleShopId,s.SaleShopName,s.Code,s.SaleName,s.InsertName,s.SaleTime,s.PayStatu,s.CustomerCommpanyName,s.CustomerMobile,s.CustomerName,s.IsCancel,s.IsFree,
s.LastAllPrice,s.AllPrice,(select ISNULL(sum(p.Price),0) from TB_ShopSalePay p where p.SaleId=s.ID and p.IsPass=1)as PassPrice,
(select ISNULL(sum(p.Price),0) from TB_ShopSalePay p where p.SaleId=s.ID and p.IsPass=0)as NoPassPrice,
(select ISNULL(sum(p.Price),0) from TB_ShopSaleRefund p where p.CodeId=s.ID and p.IsPass=1 and p.IsTrue=1)as TrueReturn,
(select ISNULL(sum(p.Price),0) from TB_ShopSaleRefund p where p.CodeId=s.ID and p.IsPass=1 and p.IsTrue=0)as FalseReturn,
s.IsCrab,s.IsProduct,
s.AddTime,s.IsDaiLi
from TB_ShopSale s

 

复制代码
select s.ID,s.SaleShopId,s.SaleShopName,s.Code,s.SaleName,s.InsertName,s.SaleTime,s.PayStatu,s.CustomerCommpanyName,s.CustomerMobile,s.CustomerName,s.IsCancel,s.IsFree,
s.LastAllPrice,s.AllPrice,ISNULL(sum(p.Price),0) as PassPrice,
ISNULL(sum(p2.Price),0) as NoPassPrice,
ISNULL(sum(p3.Price),0) as TrueReturn,
ISNULL(sum(p4.Price),0) as FalseReturn,
s.IsCrab,s.IsProduct,
s.AddTime,s.IsDaiLi
from TB_ShopSale s left outer join TB_ShopSalePay p on p.SaleId=s.ID and p.IsPass=1
left join TB_ShopSalePay p2 on  p2.SaleId=s.ID and p2.IsPass=0
left join TB_ShopSaleRefund p3 on p3.CodeId=s.ID and p3.IsPass=1 and p3.IsTrue=1
left join TB_ShopSaleRefund p4 on p4.CodeId=s.ID and p4.IsPass=1 and p4.IsTrue=0 
group by s.ID,s.SaleShopId,s.SaleShopName,s.Code,s.SaleName,s.InsertName,s.SaleTime,s.PayStatu,s.CustomerCommpanyName,s.CustomerMobile,s.CustomerName,s.IsCancel,s.IsFree,s.LastAllPrice,s.AllPrice,s.IsCrab,s.IsProduct,s.AddTime,s.IsDaiLi
复制代码
imluzhi的主页 imluzhi | 初学一级 | 园豆:37
提问于:2016-10-16 22:48
< >
分享
所有回答(1)
0

 后一种,你可以执行一下

悦光阴 | 园豆:2251 (老鸟四级) | 2016-10-17 10:18
第一种:
SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(29498 行受影响)
表 'TB_ShopSaleRefund'。扫描计数 18,逻辑读取 238 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'TB_ShopSalePay'。扫描计数 18,逻辑读取 3058 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'TB_ShopSale'。扫描计数 9,逻辑读取 2373 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

(29 行受影响)

 SQL Server 执行时间:
   CPU 时间 = 155 毫秒,占用时间 = 481 毫秒。


第二种:
SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(29498 行受影响)
表 'TB_ShopSalePay'。扫描计数 18,逻辑读取 3058 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'TB_ShopSaleRefund'。扫描计数 18,逻辑读取 238 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'TB_ShopSale'。扫描计数 9,逻辑读取 2373 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Worktable'。扫描计数 11,逻辑读取 111 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
警告: 聚合或其他 SET 操作消除了 Null 值。

(23 行受影响)

 SQL Server 执行时间:
   CPU 时间 = 94 毫秒,占用时间 = 485 毫秒。
支持(0) 反对(0) imluzhi | 园豆:37 (初学一级) | 2016-10-17 10:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册