如果 SQL 中指定了分区,系统会将查询的范围限定在所指定的分区集合内,同时根据 SQL 的查询条件进行分区裁剪。最终访问的分区为指定分区和分区裁剪二者的交集。

二级分区的名字由 一级分区+二级分区 的方式构成。例如 p0sp0,其中 p0 是一级分区的名字,sp0 是二级分区的名字。

下述示例展示了 t1 的实际分区 ID:

  1. obclient> CREATE TABLE t1
  2. (
  3. c1 INT,
  4. c2 INT
  5. )
  6. PARTITION BY hash(c1)
  7. SUBPARTITION BY RANGE(c2)
  8. (
  9. SUBPARTITION sp1 VALUES less than(200)
  10. ) partitions 5
  11. obclient> SELECT partition_id FROM __all_meta_table JOIN __all_table using(table_id)
  12. WHERE table_name = 't1';
  13. +---------------------+
  14. | partition_id |
  15. +---------------------+
  16. | 1152921509170249728 |
  17. | 1152921509170249729 |
  18. | 1152921513465217024 |
  19. | 1152921513465217025 |
  20. | 1152921517760184320 |
  21. | 1152921517760184321 |
  22. | 1152921522055151616 |
  23. | 1152921522055151617 |
  24. +---------------------+