【发布时间】:2015-01-21 23:12:35
【问题描述】:
让我给你看我的代码。
这是我的功能 那返回我的日期时间。
ALTER FUNCTION GoldenMemebr(@clubid uniqueidentifier ) returns datetime
WITH SCHEMABINDING
as
begin
DECLARE @TEMP TABLE
(
TRANSTIME DATETIME,
TOTSCORE BIGINT,
CLUBID uniqueidentifier
)
INSERT INTO @TEMP (CLUBID,TRANSTIME,TOTSCORE)
SELECT ClubProfileId, TransactionTimeStamp,
SUM(Points) OVER (ORDER BY TransactionTimeStamp) totalamount
FROM
dbo.CardTransaction CT
inner join dbo.CardTransactionLog CL
on CL.CardTransactionLogId = CT.CardTransactionLogId
and ClubProfileId = @clubid
order by CL.TransactionTimeStamp
declare @ti datetime
set @ti =
(
SELECT top 1 TRANSTIME
FROM @TEMP
WHERE TOTSCORE >= 12000
order by TRANSTIME asc
)
return @ti
end
这是我的查询
select FirstName,LastName,
SUM(Points) as score, dbo.GoldenMemebr(cp.ClubProfileId) as ExactTime
from ClubProfile cp join CardTransaction ct
on ct.ClubProfileId = cp.ClubProfileId
where MembershipType = 1
group by FirstName,LastName,dbo.GoldenMemebr(cp.ClubProfileId)
这个查询需要 14 秒 38 条记录(太可怕了)
如何优化?
【问题讨论】: