在 SQL Server 中对分区表进行查询时,是否需要做一些特别的事情?
我问的原因是因为我们有一个相当大的 SQL Server 表,它按天在“datetime2(2)”列上分区。
每天都映射到其自己的文件组,该文件组中的一个文件以适当的名称命名,例如Logs_2014-09-15.ndf
.
如果我在这个表上做一个查询说,只跨越 2 天。我在 ResourceMonitor 中看到 SQL Server 正在访问超过 2 个日常.ndf
文件。(编辑,事实上我注意到它会搜索每一个。即使我选择的一天属于 partition1 )
根据我对分区表的理解,它应该只在它需要的适当数据/分区中搜索?
所以我的问题:
- 是这样吗?
我如何比较
DateTime2
列影响查询?例如,我可以这样查询:
select * from LogsTable where [date] like '2014-09-15'
或者我可以这样做:
select * from LogsTable where [date] = CAST('2014-09-15'AS DATETIME2)
分区函数是否会自动查看
[time]
元素是否在查询中,然后将 sql 发送到正确的分区?