我有一张大型表格,我一直在使用查询分析器并寻找最佳方式来完成此操作。使用日期时间从非常大的表格中选择不同的日期(不是时间)
表是这样的:
name rows reserved data index_size unused
table_name 110980132 7802944 KB 6119784 KB 1679320 KB 3840 KB
而且具有这些列:
ID int, time_stamp datetime, value1 float, value2 float, value3 float....
这些time_stamps
的日期与时间。我需要找到一个简单的方法,不用存储任何东西,只需要获取表格的日期部分即可。最终,我可能需要知道每天+小时的部分(而不是整个时间部分)。目前,我只需要知道我们最近30天的数据是什么(有时在这一点上有几天缺失,这个问题/查询最终不仅仅是寻找最近的x天,而是所有的日子,或者随你)。
考虑性能和时间的最佳方法是什么?我玩过group by
,distinct
,top x
,rank()
,临时表,视图......有些事情比别人好,但我所做的一切似乎都很棒。
想法?谢谢!
如果你不想通过铸造(楼(CAST(TIME_STAMP为Float))的日期时间),可以添加额外的指数Daterow,你能集团 – bummi
最好在我看来,下注是为了(1)创建一个“仅限日期”的计算列(在SQL Server ** 2008中**会更容易**),(2)确保您可以**持续**计算列,并(3)在其上设置索引。这样,计算的列将始终只包含'time_stamp'的日期部分,它将被索引(可能还可以在方程中添加一些“INCLUDE”列),并且这应该允许您获得半体面性能。但它需要存储额外的列..... –
是的...我使用的是dateadd(dd,0,datediff(dd,0,time_stamp))。谷歌只是告诉我,我可以做到这一点:选择不同的顶端30 ...我之前尝试,但只是在错误的顺序的东西。我在time_stamp列上加了一个索引,我不确定它是否在做任何事情,但是这个组合似乎工作的非常好。 –