# SHOW EXPERIMENTAL_RANGES

The `SHOW EXPERIMENTAL_RANGES` statement shows information about the ranges that make up a specific table's data, including:

- The start and end keys for the range(s)
- The range ID(s)
- Which nodes contain the range replicas
- Which node contains the range that is the leaseholder

This information is useful for verifying that:

- The "follow-the-workload" feature is operating as expected.
- Range splits specified by the `SPLIT AT` statement were created as expected.

Warning:

This is an experimental feature. The interface and output are subject to change.

## Synopsis

## Required privileges

The user must have the `SELECT` privilege on the target table.

## Parameters

Parameter | Description
--- | ---
`table_name` | The name of the table you want range information about.
`table_name_with_index` | The name of the index you want range information about.

## Examples

The examples in this section operate on a hypothetical "user credit information" table filled with placeholder data, running on a 5-node cluster.

    > CREATE TABLE credit_users (
           id INT PRIMARY KEY,
           area_code INTEGER NOT NULL,
           name STRING UNIQUE NOT NULL,
           address STRING NOT NULL,
           zip_code INTEGER NOT NULL,
           credit_score INTEGER NOT NULL
    );

We added a secondary index to the table on the `area_code` column:

    > CREATE INDEX areaCode on credit_users(area_code);

Next, we ran a couple of `SPLIT AT`s on the table and the index:

    > ALTER TABLE credit_users SPLIT AT VALUES (5), (10), (15);

    > ALTER INDEX credit_users@areaCode SPLIT AT VALUES (400), (600), (999);

Note:

In the example output below, a `NULL` in the Start Key column means "beginning of table".
A `NULL` in the End Key column means "end of table".

### Show ranges for a table (primary index)

    > SHOW EXPERIMENTAL_RANGES FROM TABLE credit_users;

    +-----------+---------+----------+----------+--------------+
    | start_key | end_key | range_id | replicas | lease_holder |
    +-----------+---------+----------+----------+--------------+
    | NULL      | /5      |      158 | {2,3,5}  |            5 |
    | /5        | /10     |      159 | {3,4,5}  |            5 |
    | /10       | /15     |      160 | {2,4,5}  |            5 |
    | /15       | NULL    |      161 | {2,3,5}  |            5 |
    +-----------+---------+----------+----------+--------------+
    (4 rows)

### Show ranges for an index

    > SHOW EXPERIMENTAL_RANGES FROM INDEX credit_users@areaCode;

    +-----------+---------+----------+-----------+--------------+
    | start_key | end_key | range_id | replicas  | lease_holder |
    +-----------+---------+----------+-----------+--------------+
    | NULL      | /400    |      135 | {2,4,5}   |            2 |
    | /400      | /600    |      136 | {2,4,5}   |            4 |
    | /600      | /999    |      137 | {1,3,4,5} |            3 |
    | /999      | NULL    |       72 | {2,3,4,5} |            4 |
    +-----------+---------+----------+-----------+--------------+
    (4 rows)

## See also

- `SPLIT AT`
- `CREATE TABLE`
- `CREATE INDEX`
- Indexes
- Follow-the-Workload
- Architecture Overview