在SQL Server的分区表中搜索日期

时间:2014-09-15 13:27:49

标签: sql sql-server partitioning database-partitioning datetime2

在SQL Server中对分区表进行查询时,是否需要执行任何特殊操作?

我问的原因是因为我们有一个相当大的SQL Server表,它被分配在`datetime2(2)'一天一天。

每天都映射到自己的文件组,该文件组中的文件名称相应,如Logs_2014-09-15.ndf

如果我对此表进行查询,则表示仅跨越2天。我在ResourceMonitor中看到SQL Server正在访问2个以上的每日.ndf个文件。 (编辑,事实上我已经注意到它会通过每一个进行搜索。即使我从分区1中的某一天选择)

根据我对分区表的理解,它应该只搜索它需要的适当数据/分区?

所以我的问题:

  1. 是这样的吗?
  2. 我如何比较查询的DateTime2列效果?

    例如,我可以像这样查询:

    select * from LogsTable
    where [date] like '2014-09-15'
    

    或者我能做到:

    select * from LogsTable
    where [date] = CAST('2014-09-15'AS DATETIME2)
    
  3. 分区函数是否会自动查看[time]元素(如果它在查询中),然后将sql发送到正确的分区?

1 个答案:

答案 0 :(得分:1)

Have you tried with this:

从LogsTable中选择* 其中Dateadd(D,0,Datediff(D,0,[date]))= CAST(' 2014-09-15' AS DATETIME2)