根据表中的datetime列获取特定时间段的记录计数

本文关键字:时间段 定时间 记录 datetime 获取 | 更新日期: 2023-09-27 18:15:14

我有一个名为Forms的表,我们存储多行。表单表有列FormId(uniqueidentifier),FormName(varchar(max)),SubmitedDate(datetime),HasValidFields(bit),IsValidRecord(bit)。我正在使用实体框架6。通过api,用户可以查询过去24小时、过去7天、过去30天或过去12个月的记录。对于不同的查询,我通过读取那些请求的天数/月份的IsValidRecord(bit)列的值来返回有效记录的数量并且对于每个查询,我必须返回使用列HasValidFields(bit)具有HasValidFields的记录数。

由于这个表中会有很多记录,那么为了提高性能,哪种方法比较合适呢?我应该使用EF查询还是使用视图,或者使用索引?记录表:

 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天的样本输出(不是基于上述样本输入)

DateValidRecords

27-Oct-16 12

26-Oct-16 40

25-Oct-16 12

24-Oct-16 41

23-Oct-16 19日

22-Oct-16 46

21-Oct-16 56

对于最后小时,它将是小时列而不是日期,对于年,它将是年列。

根据表中的datetime列获取特定时间段的记录计数

你应该在SubmittedDate和HasValidFields上添加一个索引(即一个使用这两个列的索引)。

我不认为实体框架为你生成索引,尽管你可以使用属性为实体框架添加索引(如果做代码优先设计)。