2017-05-30 7 views
1

自分の仕事でレガシーデータベースを使用しています。異なるデータ型の列に2つのテーブルを結合する必要があります。テーブルを結合するときにキャストを使用する

一つはint型であり、もう一つは長いので、エンティティフレームワークを変換するときにLINQは、私がJOIN状態でこのような何かを得たSQL式に参加:CAST([Extent1].[KundeID] AS bigint) = [Extent2].[ClientNumber]

このため、KundeIDのインデックスは無視され、結合は非常に遅いです。

キャストされた値にインデックスを作成することはできますか?CAST([KundeID] AS bigint)のインデックスは[KundeID]の代わりにありますか?または、他の解決策が働く可能性があります。

+1

変換された列を計算列として保存しようとしましたか?そうすれば、その列にインデックスを追加できます。 MS Docsに関する詳細情報:https://docs.microsoft.com/en-us/sql/relational-databases/indexes/indexes-on-computed-columns。 – SchmitzIT

+0

ありがとう、私はそれを試みます。 – Aleksa

答えて

0

[Extent2].[ClientNumber]に貼り付けてみてください。インデックスを使用できますか?

+0

私は両方の列にインデックスを持っています。だから誰も改宗するべきではありません。 – Aleksa

+0

次に、上記のようにコンピュータの列とインデックスを追加する必要があると思います。 – NetMage

関連する問題