在SQL Server中对分区表进行查询时,是否需要执行任何特殊操作?
我问的原因是因为我们有一个相当大的SQL Server表,它被分配在`datetime2(2)'一天一天。
每天都映射到自己的文件组,该文件组中的文件名称相应,如Logs_2014-09-15.ndf
。
如果我对此表进行查询,则表示仅跨越2天。我在ResourceMonitor中看到SQL Server正在访问2个以上的每日.ndf
个文件。 (编辑,事实上我已经注意到它会通过每一个进行搜索。即使我从分区1中的某一天选择)
根据我对分区表的理解,它应该只搜索它需要的适当数据/分区?
所以我的问题:
我如何比较查询的DateTime2
列效果?
例如,我可以像这样查询:
select * from LogsTable
where [date] like '2014-09-15'
或者我能做到:
select * from LogsTable
where [date] = CAST('2014-09-15'AS DATETIME2)
分区函数是否会自动查看[time]
元素(如果它在查询中),然后将sql发送到正确的分区?
答案 0 :(得分:1)
Have you tried with this:
从LogsTable中选择* 其中Dateadd(D,0,Datediff(D,0,[date]))= CAST(' 2014-09-15' AS DATETIME2)