2017-05-30 23 views
1

我在作业中使用遗留数据库,我需要连接两个不同数据类型的表。在连接表时使用转换

一个是int,而另一种是长的,所以,当实体框架转换LINQ加入到SQL表达我有这样的事情在JOIN条件:CAST([Extent1].[KundeID] AS bigint) = [Extent2].[ClientNumber]

因此,KundeID columd上的索引被忽略,并且加入非常缓慢。

是否有可能创建和索引铸造价值,所以我有索引CAST([KundeID] AS bigint)而不是[KundeID]?或任何其他解决方案,可能工作..

+1

您是否尝试将转换后的列存储为计算列?这样你可以添加一个索引到该列。有关MS文档的更多信息:https://docs.microsoft.com/en-us/sql/relational-databases/indexes/indexes-on-computed-columns。 – SchmitzIT

+0

谢谢,我会试试。 – Aleksa

回答

0

你可以尝试申请Convert.ToInt32()[Extent2].[ClientNumber]所以可以使用索引?

+0

我在两列都有索引。所以他们都不应该被转换。 – Aleksa

+0

然后我认为你需要按照上面的建议添加一个计算机列和索引。 – NetMage