MAPREDUCE服务 MRS-HBase本地二级索引介绍:基于HBase本地二级索引查询数据

时间:2024-09-25 14:06:44

基于HBase本地二级索引查询数据

在具有索引的用户表中,可以使用Filter来查询数据。对于创建单索引和组合索引的用户表,使用过滤器查询的结果与没有使用索引的表相同,但数据查询性能高于没有使用索引的表。

索引的使用规则如下:

  • 对于为一个或多个列创建单个索引的情况:
    • 当将此列用于AND或OR查询筛选时,使用索引可以提高查询性能。

      例如,Filter_Condition(IndexCol1)AND / OR Filter_Condition(IndexCol2)。

    • 当在查询中使用“索引列和非索引列”进行过滤时,此索引可以提高查询性能。

      例如,Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(NonIndexCol1)。

    • 当在查询中使用“索引列或非索引列”进行筛选时,但不使用索引,查询性能不会提高。

      例如,Filter_Condition(IndexCol1)AND / OR Filter_Condition(IndexCol2) OR Filter_Condition(NonIndexCol1)。

  • 对于为多个列创建组合索引的情况:
    • 当用于查询的列是组合索引的全部或部分列并且与组合索引具有相同的顺序时,使用索引会提高查询性能。

      例如,为C1,C2和C3创建组合索引。

      • 该索引在以下情况下生效:

        Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3)

        Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)

        FILTER_CONDITION(IndexCol1)

      • 该索引在下列情况下不生效:

        Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3)

        Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol3)

        FILTER_CONDITION(IndexCol2)

        FILTER_CONDITION(IndexCol3)

    • 当在查询中使用“索引列和非索引列”进行过滤时,使用索引可提高查询性能。

      例如:

      Filter_Condition(IndexCol1)AND Filter_Condition(NonIndexCol1)

      Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(NonIndexCol1)

    • 当在查询中使用“索引列或非索引列”进行筛选时,但不使用索引,查询性能不会提高。

      例如:

      Filter_Condition(IndexCol1)OR Filter_Condition(NonIndexCol1)

      (Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2))OR(Filter_Condition(NonIndexCol1))

    • 当多个列用于查询时,只能为组合索引中的最后一列指定值范围,而其他列只能设置为指定值。

      例如,为C1,C2和C3创建组合索引。在范围查询中,只能为C3设置数值范围,过滤条件为“C1 = XXX,C2 = XXX,C3 = 数值范围”。

support.huaweicloud.com/cmpntguide-mrs/mrs_01_0506.html