处理日期订购以获得更好性能的最佳方法?

时间:2012-02-07 18:34:45

标签: c# performance entity-framework

我有大表,包含DateTime列,用于存储我的应用程序中某些事件和操作的确切时间。在某些情况下,用户可以输入活动的日期。

我想验证事件序列,在发生事件时查找事件等等。

如果我按DateTime订购事件,则在大数据中耗费时间。如果我按Id订购,则无法保证订购用户数据条目,用户也不负责确定顺序(他们只输入日期时间)。我更喜欢用数字字段而不是DateTime来订购。

你有什么建议?

2 个答案:

答案 0 :(得分:2)

如果您的数据库已将该列编入索引,则DateTime列的排序速度不应该很慢,即使是在大型数据上也是如此。

我个人会直接在DateTime(使用db上的索引)进行排序,但请确保您的LINQ查询将结果限制在适当的日期窗口。

答案 1 :(得分:1)

请记住,自固定时间点(通常是1970年1月1日)起,日期时间将存储为整数个刻度。要比较日期时间,它只是这个单一值的整数比较,它不需要比较年,月,日等。这是除非您将日期存储为字符串,而不是日期时间。

我的猜测是你的数据库在内部存储按ID排序的数据,并且ID也被编入索引,这就是为什么这么快。您的问题不是在数据时间上排序,它只是在非ID列上排序。正如Reed建议的那样,您可能只需要对列进行索引。也有可能你在某个地方以某种你不应该做的方式做某事。如果没有看到代码,数据库配置等,很难说这可能是什么。