Sql server 2005 SQL中的性能问题
嗨,朋友们,我有大麻烦了 我有一个疑问,执行过程大约需要20分钟。450亿美元的记录 这就是问题所在Sql server 2005 SQL中的性能问题,sql-server-2005,Sql Server 2005,嗨,朋友们,我有大麻烦了 我有一个疑问,执行过程大约需要20分钟。450亿美元的记录 这就是问题所在 SELECT a.cmddefinitionid, b.cmdinstanceid, b.mobileid, d.phonenumber, d.hardwareid, d.smsemail, a.cmdid, c.cmdname, c.cmdxmldesc, a.event
SELECT
a.cmddefinitionid,
b.cmdinstanceid,
b.mobileid,
d.phonenumber,
d.hardwareid,
d.smsemail,
a.cmdid,
c.cmdname,
c.cmdxmldesc,
a.eventflag,
a.recurrenceflag,
a.paramflag,
a.filename,
a.paramname,
a.VALUE,
a.meterflag,
a.gosilentflag,
a.regurl,
b.scheduleddate,
-- e.TxnTypeID, -- Added
e.TxnID,-- Added
e.StatusMsg,-- Added
b.LastModified as TimeCreated,-- Added newly
d.PanelistID -- Added newly
FROM
( select CmdInstanceID, TxnTypeID, TxnID, StatusMsg
from ODM_TDCS.dbo.CMD_TXN
where TxnTypeID < 3
and TxnID IN (
select max(TxnID)
from ODM_TDCS.dbo.CMD_TXN
group by CmdInstanceID)
) AS e,
dbo.cmd_definition AS a,
dbo.cmd_instance AS b,
dbo.lu_cmd AS c,
dbo.lu_mobile AS d
WHERE
a.cmddefinitionid = b.cmddefinitionid
and
a.cmdid = c.cmdid and b.mobileid = d.mobileid and
b.cmdtypeid = 2 AND
b.scheduleddate > Getdate() - 2 AND
b.CmdInstanceID = e.CmdInstanceID
现在,除此之外:
select CmdInstanceID, TxnTypeID, TxnID, StatusMsg
from ODM_TDCS.dbo.CMD_TXN
where TxnTypeID < 3
and TxnID IN (
select max(TxnID)
from ODM_TDCS.dbo.CMD_TXN
group by CmdInstanceID)
这需要5分钟以上的时间,但如果我删除此条件,查询将在中执行
0.17秒
有什么帮助或建议吗???试试这个
挑选
a、 cmddefinitionid
b.cmdinstanceid,
b.mobileid,
d.phonenumber,
d.hardwareid,
d.smsemail,
a.cmdid,
c.cmdname,
c.cmdxmldesc,
a.eventflag,
a.recurrenceflag,
a.paramflag,
a.filename,
a.paramname,
a.VALUE,
a.meterflag,
a.gosilentflag,
a.regurl,
b.scheduleddate,
-e.TxnTypeID,-添加
e.TxnID,-- Added
e.StatusMsg,-- Added
b.LastModified as TimeCreated,-- Added newly
d.PanelistID -- Added newly
FROM
(Select * from (
select CmdInstanceID, TxnTypeID, TxnID, StatusMsg,
ROW_NUMBER() over (partition by CmdInstanceID order by TxnID desc ) as Row
from ODM_TDCS.dbo.CMD_TXN
where TxnTypeID < 3
)as t where e.Row = 1
) AS e,
dbo.cmd_definition AS a,
dbo.cmd_instance AS b,
dbo.lu_cmd AS c,
dbo.lu_mobile AS d
WHERE
a.cmddefinitionid = b.cmddefinitionid
and
a.cmdid = c.cmdid and b.mobileid = d.mobileid and
b.cmdtypeid = 2 AND
b.scheduleddate > Getdate() - 2 AND
b.CmdInstanceID = e.CmdInstanceID
刚刚使用了行数函数,这将避免移动ODM_TDCS.dbo.CMD_TXN
反复
祝你好运。您好,但我是一名java开发人员,遇到了一些问题,请我检查是否可以解决。我很少接触sql。这是现有的sql,我在其中根据CmdInstanceID条件从ODM_TDCS.dbo.CMD_TXN中添加select CmdInstanceID、TxnTypeID、TxnID、STATUSSMSG,其中TxnTypeID<3,从ODM_TDCS.dbo.CMD_TXN组中添加TxnID。我还检查了CMD_TXN表索引已经存在于该表中。