Sql server 查询执行问题
使用SQL 2005:“执行时间过长” 我想过滤日期,该日期不应显示在假日中,我使用三个具有内部联接的表 当我运行下面的查询时,执行起来花费了太多时间,因为我用三个表过滤cardeventdate 质疑 对于上面提到的查询,还有其他方法可以进行日期筛选Sql server 查询执行问题,sql-server,sql-server-2005,Sql Server,Sql Server 2005,使用SQL 2005:“执行时间过长” 我想过滤日期,该日期不应显示在假日中,我使用三个具有内部联接的表 当我运行下面的查询时,执行起来花费了太多时间,因为我用三个表过滤cardeventdate 质疑 对于上面提到的查询,还有其他方法可以进行日期筛选 “我的查询”需要其他查询吗?您是否已在用于执行联接的所有列上创建了索引?特别是,我会考虑Ty-CARDEVENT上的人物索引,Tyman和TyWorkOutToC中的ToCod,以及TyWorkOutToT中的假日。 < P>我非常确信,不是连接
“我的查询”需要其他查询吗?您是否已在用于执行联接的所有列上创建了索引?特别是,我会考虑Ty-CARDEVENT上的人物索引,Tyman和TyWorkOutToC中的ToCod,以及TyWorkOutToT中的假日。 < P>我非常确信,不是连接表是问题所在,而是“不在”使它变慢。 请尝试改用联接:
select m.PERSONID, m.CardEventDate
from T_PERSON p
inner join T_CARDEVENT c on p.PERSONID = c.PERSONID
inner join DUAL_PRO_II_TAS.dbo.T_WORKINOUTTIME w
on c.CARDEVENTDAY = w.DAYCODE
and p.TACODE = w.TACODE
and w.HOLIDAY = 'true'
right join tmp_cardevent3 m on m.CardEventDate = c.CardEventDate
where c.CardEventDate is null
order by m.PERSONID, m.CardEventDate desc
(您的查询中缺少from
子句,因此我不知道您试图从哪个表中获取数据。)
编辑:将tmp_cardevent3放在正确的位置。对于发布的初始select语句,似乎缺少from子句?在从tmp_cardevent3放置之前,我的表名是tmp_cardevent3。我执行了,但有错误。请你能帮我一个忙吗?如果你试图在字段列表中输入一个表名,你会发现一个错误。。。我把它放在上面查询的正确位置。
select m.PERSONID, m.CardEventDate
from T_PERSON p
inner join T_CARDEVENT c on p.PERSONID = c.PERSONID
inner join DUAL_PRO_II_TAS.dbo.T_WORKINOUTTIME w
on c.CARDEVENTDAY = w.DAYCODE
and p.TACODE = w.TACODE
and w.HOLIDAY = 'true'
right join tmp_cardevent3 m on m.CardEventDate = c.CardEventDate
where c.CardEventDate is null
order by m.PERSONID, m.CardEventDate desc