私はエンティティフレームワークを使用していますが、私はカンマで区切られたIDを保持するために使用している文字列フィールドを持っています。任意の文字列に〜30個のIDを超えることはありませんが、検索するには何百万行もかかることがあります。 ex。 「435,6789,1231,232は」エンティティフレームワークで文字列またはxml型を検索すると、最も速いのは何ですか?
は私が.Contains()
var events = dbContext.YogaSpaceEvents.Where(i => i.RegisteredStudentIds.Contains("12345") && i.EventDateTime >= DateTime.Now);
ますが、この実行は本当にゆっくりと数百万レコードとして以下のような特定のIDの文字列を検索することができます知っていますか? もしそうなら、何百万もの行があるときにはるかに高速に動作するxmlのような、より良いアプローチやカラムタイプがありますか?
何百万行ものデータを入力する必要があるため、テストするのは難しいです。
ストップCSVとして1つのフィールド内の複数のデータを格納し、正しくデータを正規化すると言うことができます非常に非効率な2つの検索方法の比較について心配する必要はありません。 –
最も速い方法は、ハッシュテーブルを使用することです。だから私はすべてのcsv idsを取って、キーとしてIDと値として行番号を含む辞書を作成します。したがって、同じIDを含む複数の行がある場合、DictionaryはDictionary> dictになります。次に、辞書を構築します。次に、検索時間を短縮する検索を行います。 –
jdweng