从整个分区中选择还是从具有小数据集的表中进行选择之间有区别?

| 我是分区新手。 两者之间的性能会有差异吗?
select * from my_partitionedData where date = \'20110523\' 
select * from my_Data where date = \'20110523\' 
其中
my_partitionedData
是被
date
划分为1天的表,而
my_Data
是仅包含
\'20110523\'
的数据并且两个表具有相同结构的表? 另一个问题-如果
my_partitionedData
的所有分区都在同一个文件组中,则运行这些选择的性能会有所不同吗? (注意-选择始终为1天)     
已邀请:
像SQL中的所有其他内容一样,您将需要进行测试以确保确定。 话虽如此,我认为您应该获得相同的性能。 在后台,分区表基本上是许多较小的表,这些表在逻辑上结合在一起。如果要在分区表中按天进行分区,并且非部分表只有一天的数据,则执行计划和性能应该几乎相同。     
如果返回相同的数据集,则分区表和非分区表将返回具有相同IO的数据。如果分区表的碎片较少,那么从磁盘头的随机查找以检索页面开始的IO延迟将减少,但所有100k数据中的总和为100k。 您没有提及是否正在考虑对索引进行分区。分区索引是减少找到数据行位置必须遍历的级别数的绝佳方法。最佳解决方案是对具有相同功能的索引和表进行分区。     
  其中my_partitionedData是一个表   按日期除以1天,然后   my_Data是仅包含数据的表   \'20110523 \'和两个表都有   相同的结构? 后者会减少访问时间。   另一个问题-谁在那里   跑步表现差异   这些选择是否所有分区   my_partitionedData位于同一位置   文件组? (请注意-选择是   持续1天) 尽管有1天的数据,但在这种情况下访问时间会更长。 需要分区以提高大型表和具有不同访问模式的表的可伸缩性和可管理性。 您创建了两个表来存储有关每日记录的信息,而另一方面,用于每天数据的单个表是最易于设计和理解的,但是这些表未必针对性能,可伸缩性和可管理性进行了优化,尤其是作为表变得更大。     

要回复问题请先登录注册