Sql 配置单元分区性能

Sql 配置单元分区性能,sql,hadoop,hive,hiveql,Sql,Hadoop,Hive,Hiveql,我想问一下配置单元分区的性能。 我需要多少行记录才能看到分区性能 目前,我有200多万条记录,我已经将表拆分为两个分区。 我的分区条件如下: 添加分区年份\u月份='2017\u 07' 添加分区年份\u月份='2017\u 08' 插入覆盖表T分区年份\u月份='2017\u 07' 从T中选择*,其中st_时间='2017_08_01 00:00:00.0'; 当我尝试在分区表和非分区表之间进行一些性能测试时,两个表的性能相对相同。 我的性能测试查询如下: 从T中选择*,其中st_时间

我想问一下配置单元分区的性能。 我需要多少行记录才能看到分区性能

目前,我有200多万条记录,我已经将表拆分为两个分区。 我的分区条件如下:

添加分区年份\u月份='2017\u 07' 添加分区年份\u月份='2017\u 08' 插入覆盖表T分区年份\u月份='2017\u 07' 从T中选择*,其中st_时间<'2017_08_01 00:00:00.0'; 插入覆盖表T分区年份\u月份='2017\u 08' 选择*FROM T,其中st_time>='2017_08_01 00:00:00.0'; 当我尝试在分区表和非分区表之间进行一些性能测试时,两个表的性能相对相同。 我的性能测试查询如下:

从T中选择*,其中st_时间<'2017_08_01 00:00:00.0'; 从st_时间<'2017_08_01 00:00:00.0'的非_部分_表中选择*; 我是否遗漏了一些重要的要点

另外,分区对派生列/函数有效吗?例如日期格式时间,yyyy-MM

非常感谢您的帮助或建议

两个表的性能相对相同

您忘记了针对分区的WHERE子句。分区只有在您选择分区中的数据时才能提高性能

如果没有这个,您仍然在扫描整个表以查找st_时间值

您可以向查询添加解释以查看差异


通过将数据转换为拼花地板或ORC,您将获得额外的性能改进

嗨,cricket_007,非常感谢您的帮助!分区对函数有效吗?例如,我将分区定义为year_month='2017_07',并且我的表中的year_month列是时间戳数据类型。在我的WHERE子句中,我使用DATEYFrimeAtthyA月,Yyyymm,它是否考虑在分区中选择数据?您的分区已经是20172007 07…日期格式的目的是什么?我的意思是,当然,就像concat'2017'一样,'u 07'可能会起作用,嗯,你说的有道理。非常感谢你帮我解决问题!你好,先生!事实上,如果没有适当的WHERE子句,分区表实际上会恶化读取性能。这不是@cricket_007吗?@y2k shubham的重点是在哪里修剪分区和扫描的数据,所以是吗?但是有一个分区的表并且不基于它们进行过滤与没有分区没有任何区别
SELECT * FROM T 
WHERE year_month = '2017_07'
-- AND st_time < '2017_08_01 00:00:00.0'
;