数据库优化点滴
原来四舍五入也有个国际惯例,叫奇进偶舍,意思是当舍入位前面一位是奇数时,就进,为偶数时,就舍,这也是体现公平性的原理。
可是国际惯例往往在国内很多企业行不通,为了应付他们的要求,采用Math.Round(price,2,MidpointRounding.AwayFromZero)就可以了。
SELECT Sum([TradeNum]), Sum([Payment]), [TradeTime],
(select sum([Payment]) from [Order] as o where [TradeStatus] =2 and o.ID=[Order].ID) as NoPayment
FROM [Order]
GROUP BY date(tradetime)
优化如下:
SELECT Sum([TradeNum]), Sum([Payment]), [TradeTime],O.NoPayment
FROM [Order] O,
(select ID,sum([Payment])NoPayment from [Order] as o where [TradeStatus] =2 GROUP BY ID) T WHERE O.ID=T.ID
GROUP BY DATEPART(DD,tradetime) ,O.NoPayment
总结:在select 中如果需要到表中查询的话, 如果想办法把它拆分到from中来。
SQL中分布式查询用这个
BEGIN DISTRIBUTED TRANSACTION