MinMaxIndex

MinMaxIndex简单地记录数据的最大和最小值,占用空间极小。 因此,这一索引仅仅能被用于已经排序的数据列。

使用场景

注意:当前,启发式索引仅支持ORC存储格式的Hive数据源。

MinMaxIndex用于调度时的分片过滤,被coordinator节点使用。

选择适用的列

在对数据进行排序的列上具有过滤predicate的query可以从MinMaxIndex中得到好的效果。

例如,如果一下数据是根据age来排序的,那么一个像SELECT name from users WHERE age> 25 之类的query则可以因有效地在age上利用MinMaxIndex,而从中得到好的效果。

支持的运算符

  1. = Equality
  2. > Greater than
  3. >= Greater than or equal
  4. < Less than
  5. <= Less than or equal

支持的列类型

  1. "integer", "smallint", "bigint", "tinyint", "varchar", "char", "boolean", "double", "real", "date", "decimal"

注意: 不支持采用其它数据类型来创建index。

用例

创建索引:

  1. create index idx using minmax on hive.hindex.users (age);
  2. create index idx using minmax on hive.hindex.users (age) where regionkey=1;
  3. create index idx using minmax on hive.hindex.users (age) where regionkey in (3, 1);
  • 假设表已按照regionkey列分区

使用索引:

  1. select name from hive.hindex.users where age=20
  2. select name from hive.hindex.users where age>20
  3. select name from hive.hindex.users where age<20
  4. select name from hive.hindex.users where age>=20
  5. select name from hive.hindex.users where age<=20