Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 查询执行问题_Sql Server_Sql Server 2005 - Fatal编程技术网

Sql server 查询执行问题

Sql server 查询执行问题,sql-server,sql-server-2005,Sql Server,Sql Server 2005,使用SQL 2005:“执行时间过长” 我想过滤日期,该日期不应显示在假日中,我使用三个具有内部联接的表 当我运行下面的查询时,执行起来花费了太多时间,因为我用三个表过滤cardeventdate 质疑 对于上面提到的查询,还有其他方法可以进行日期筛选 “我的查询”需要其他查询吗?您是否已在用于执行联接的所有列上创建了索引?特别是,我会考虑Ty-CARDEVENT上的人物索引,Tyman和TyWorkOutToC中的ToCod,以及TyWorkOutToT中的假日。 < P>我非常确信,不是连接

使用SQL 2005:“执行时间过长”

我想过滤日期,该日期不应显示在假日中,我使用三个具有内部联接的表

当我运行下面的查询时,执行起来花费了太多时间,因为我用三个表过滤cardeventdate

质疑

对于上面提到的查询,还有其他方法可以进行日期筛选


“我的查询”需要其他查询吗?

您是否已在用于执行联接的所有列上创建了索引?特别是,我会考虑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