--select top 10000 * into #s from search set statistics time on set statistics io on select userId,count(*) as searchNum,s.Posttime, p.RootID ,s.url from #s s left outer join ProductInfo p on s.ProductID like '%' + p.RootID + '%' group by userid, p.RootID,s.Posttime,s.url --dbo.GetPlatform(s.url) like 41s --- like 13s --去掉userid的case 13s select userId,count(*) as searchNum,s.Posttime,p.RootID ,s.url from #s s inner join ProductInfo p on s.ProductID like '%' + p.RootID + '%' group by userid, p.RootID, s.Posttime,s.url set statistics time off set statistics io off
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
(1228 行受影响)
表 '#s__________________________________________________________________________________________________________________000000000655'。扫描计数 3,逻辑读取 223 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Worktable'。扫描计数 287,逻辑读取 19242 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'CNKI_ProductInfo'。扫描计数 2,逻辑读取 4207 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
(1 行受影响)
SQL Server 执行时间:
CPU 时间 = 2984 毫秒,占用时间 = 2704 毫秒。
(1224 行受影响)
表 'CNKI_ProductInfo'。扫描计数 3,逻辑读取 16 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Worktable'。扫描计数 2,逻辑读取 84888 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 '#s__________________________________________________________________________________________________________________000000000655'。扫描计数 2,逻辑读取 446 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
(1 行受影响)
SQL Server 执行时间:
CPU 时间 = 24923 毫秒,占用时间 = 12861 毫秒。
最好把like改成以下方式实现
select Convert(varchar(10),s.Posttime,20),p.RootID,dbo.GetPlatform(s.url),case userId when -1 then -1 else 2 end ,COUNT(*),0,0 from Search s cross apply dbo.ParameterSplit(s.ProductID,';') sp inner join ProductInfo p on sp.Item = p.RootID where s.PostTime >= Convert(varchar(10),'2012-01-01',20) and s.PostTime < Convert(varchar(10),'2013-09-09',20) group by Convert(varchar(10),s.Posttime,20),p.RootID,dbo.GetPlatform(s.url),case userId when -1 then -1 else 2 end