一个业务表(100万条),一个用户表(1000条),关联查询
Order表的CreateTime,UserName索引;
User表的UserName做索引,Sex不做索引,在ASP.NET程序中查询时,SQL超时(在查询分析器中,不会超时);
User表的UserName,Sex做索引,则速度很快,程序或查询分析器都很快;
何故?
with CTE as(
select
b.Type,
Amount = sum(b.Amount)
from User a
inner join Order b on b.CreateTime >= '2014-05-01' and b.CreateTime < '2014-05-30' and a.UserName = b.UserName and a.Sex != 1
group by b.Type
)
select * from CTE order by Type asc
------解决方案--------------------
SELECT b.[Type] ,
Amount = SUM(b.Amount)
FROM [User] a
INNER JOIN [Order] b ON b.CreateTime >= '2014-05-01'
AND b.CreateTime < '2014-05-30'
AND a.UserName = b.UserName
AND a.Sex != 1
GROUP BY b.[Type]
针对这句,ctrl+l,贴图