3

在 SQL Server 中对分区表进行查询时,是否需要做一些特别的事情?

我问的原因是因为我们有一个相当大的 SQL Server 表,它按天在“datetime2(2)”列上分区。

每天都映射到其自己的文件组,该文件组中的一个文件以适当的名称命名,例如Logs_2014-09-15.ndf.

如果我在这个表上做一个查询说,只跨越 2 天。我在 ResourceMonitor 中看到 SQL Server 正在访问超过 2 个日常.ndf文件。(编辑,事实上我注意到它会搜索每一个。即使我选择的一天属于 partition1 )

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

所以我的问题:

  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 发送到正确的分区?

4

1 回答 1

1
Have you tried with this:

select * from LogsTable where Dateadd(D, 0, Datediff(D, 0, [date])) = CAST('2014-09-15'AS DATETIME2)

于 2014-09-24T11:22:58.090 回答