Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 我正在尝试使用内部联接联接两个表_Sql_Sql Server 2008 - Fatal编程技术网

Sql 我正在尝试使用内部联接联接两个表

Sql 我正在尝试使用内部联接联接两个表,sql,sql-server-2008,Sql,Sql Server 2008,我试图用内部联接联接两个表,第二个表是一个大表。因此,当我运行查询时,它花费的时间太长。这是我的查询示例 select distinct name,number,ID,count from Import A inner join Claim B on B.ClaimNo between A.beginClaimNumber and A.endClaimnumber where cast(Receivedate as date) between ('2015-01-01') and (

我试图用内部联接联接两个表,第二个表是一个大表。因此,当我运行查询时,它花费的时间太长。这是我的查询示例

select distinct name,number,ID,count 
from Import A 
inner join Claim B 
  on B.ClaimNo between A.beginClaimNumber and A.endClaimnumber 
where cast(Receivedate as date) between ('2015-01-01') and ('2015-03-01') 
  and B.IO = 'O' 
order by ID

尝试在导入时使用INCLUDE放置包含查询的索引

然后在claimNo上添加另一个索赔,包括beingClaimNumber和endClaimNumber


还可以在SQL management studio中检查执行计划,它可能会给您提供建议。

花费太长时间并不是一个真正的错误。可能有很多原因导致了这种情况,但没有一个与您的查询相关。从索引开始。删除WHERE子句中的强制转换和类间转换,然后尝试可搜索的内容,请参阅此处确保在ClaimNo列的Claim表上有索引。我添加强制转换是因为Receivedate是时间戳。我在Claim表中有多个索引,您认为在IO上添加索引是一个好主意吗。如果我从查询中删除B.IO,查询似乎正在执行一些结果,但仍然需要更长的时间,如果我添加B.IO='O',则需要永远的时间。