如果日期时间列在 table 的特定时间段内,则根据日期时间列获取记录数
Getting count of records on the basis if datetime column in table for certain period of time
我有一个 table 叫做表单,我们在其中存储多行。
表格 table 有列 FormId(uniqueidentifier),FormName(varchar(max)),SubmitedDate(datetime),HasValidFields(bit),IsValidRecord(bit)
。
我正在使用 entity framework 6。
使用 api 用户可以查询最近 24 小时、最近 7 天、最近 30 天或最近 12 个月的记录。
对于不同的查询,我有 return 条有效记录,方法是读取请求 days/months 的列 IsValidRecord(bit)
的值
对于每个查询,我必须使用列 HasValidFields(bit)
.
return 具有 HasValidFields 的记录数
因为这个table会有很多条记录,所以要提高性能应该用suitable方法吗?
我应该只使用 EF 进行查询,还是应该使用 view 或使用索引?
记录 table :
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
过去 7 天的样本输出(不基于上述样本输入)
日期 有效记录
16 年 10 月 27 日 12
26-Oct-16 40
16 年 10 月 25 日 12
24-Oct-16 41
16 年 10 月 23 日 19
22-Oct-16 46
16 年 10 月 21 日 56
对于最后几个小时,它将是小时列而不是日期,对于年,它将是年列。
您应该在 SubmittedDate 和 HasValidFields 上添加一个索引(即使用两个列的一个索引)。
我认为 Entity Framework 不会为您生成索引,尽管您可以使用属性 entity framework 添加索引(如果进行代码优先设计)。
我有一个 table 叫做表单,我们在其中存储多行。
表格 table 有列 FormId(uniqueidentifier),FormName(varchar(max)),SubmitedDate(datetime),HasValidFields(bit),IsValidRecord(bit)
。
我正在使用 entity framework 6。
使用 api 用户可以查询最近 24 小时、最近 7 天、最近 30 天或最近 12 个月的记录。
对于不同的查询,我有 return 条有效记录,方法是读取请求 days/months 的列 IsValidRecord(bit)
的值
对于每个查询,我必须使用列 HasValidFields(bit)
.
因为这个table会有很多条记录,所以要提高性能应该用suitable方法吗? 我应该只使用 EF 进行查询,还是应该使用 view 或使用索引? 记录 table :
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
过去 7 天的样本输出(不基于上述样本输入)
日期 有效记录
16 年 10 月 27 日 12
26-Oct-16 40
16 年 10 月 25 日 12
24-Oct-16 41
16 年 10 月 23 日 19
22-Oct-16 46
16 年 10 月 21 日 56
对于最后几个小时,它将是小时列而不是日期,对于年,它将是年列。
您应该在 SubmittedDate 和 HasValidFields 上添加一个索引(即使用两个列的一个索引)。
我认为 Entity Framework 不会为您生成索引,尽管您可以使用属性 entity framework 添加索引(如果进行代码优先设计)。