2016-10-27 4 views
0

複数の行を格納するFormsという1つのテーブルがあります。 フォームテーブルには列FormId(uniqueidentifier),FormName(varchar(max)),SubmitedDate(datetime),HasValidFields(bit),IsValidRecord(bit)があります。 私はエンティティフレームワーク6を使用しています。 apiユーザーは、過去24時間、過去7日間、過去30日間、または過去12ヶ月に基づいてレコードをクエリできます。 私は の要求された日数の列IsValidRecord(bit)の値を読み取って有効なレコードの戻り値を返し、各クエリについてはHasValidFieldsの列HasValidFields(bit)を持つレコードの数を返す必要があります。特定の期間のテーブルのdatetime列の場合のレコード数の取得

この表には多くのレコードがあるので、適切な方法であるパフォーマンスを向上させるためには? EFを使用してクエリを実行するか、ビューを使用するか、インデックスを使用する必要がありますか? レコードテーブル:過去7日間の

FormId        FormName SubmitedDate HasValidFields IsValidRecord 
F3999F60-57B4-494C-868F-331EE5DC6A5F Form1 10/4/16 11:51 1     1 
9C23FFC0-F5C9-4E52-B272-34F75D8B4EE6 Form13 10/4/16 11:51 0     1 
0658B103-D7B5-4C9E-8209-7BAB82C0E35E Form12 10/4/16 11:51 1     1 
2C348300-7FD2-471E-8DA4-D7E0DD4B53EE Form18 10/4/16 11:51 1     0 
F3999F60-57B4-494C-868F-331EE5DC6A5F Form13 10/5/16 5:24 1     0 
0664C797-0CDF-443C-8ABE-E497E72BE738 Form19 10/5/16 5:24 1     1 
F3999F60-57B4-494C-868F-331EE5DC6A5F Form12 10/5/16 5:24 0     1 
9C23FFC0-F5C9-4E52-B272-34F75D8B4EE6 Form15 10/5/16 5:24 0     1 
DAF34CEB-F7F6-4386-829C-D0D76E4E657D Form16 10/5/16 5:43 1     1 
9C23FFC0-F5C9-4E52-B272-34F75D8B4EE6 Form17 10/5/16 5:43 1     1 

サンプル出力

ValidRecords(未上記のサンプル入力に基づいて)

27 - 10月 - 16 12

26-Oct-16 40

25 10月 - 16 12

24 10月 - 16 41

23 10月 - 16 19

の22-oct-16 46

21 10月 - 16 56

最後の時間は、日付の代わりに時間の列になり、年の場合は年の列になります。

+0

開始データの内容がわからない場合、サンプル出力データは役に立ちません。 – Hogan

+0

*これは適切な方法でしょう*私は知らない。 1つは、現在の方法とパフォーマンスがわかりません。適切な方法を求める*はあまりにも広すぎます。 –

答えて

0

SubmittedDateおよびHasValidFields(つまり、両方の列を使用する1つのインデックス)にインデックスを追加する必要があります。

エンティティフレームワークでインデックスを追加することはできますが、(最初のデザインを行う場合は)属性を使用してエンティティフレームワークでインデックスを追加できます。

関連する問題