# 隠しプライマリキー用の非クラスタ化インデックス
```
tidb> CREATE TABLE test.example_table1 (
  example_id BIGINT,
  example_content VARCHAR(60)
);

tidb> CREATE TABLE test.example_table2 (
  example_id CHAR(10),
  example_content VARCHAR(60)
);

tidb> SELECT TABLE_NAME, TIDB_PK_TYPE
  FROM information_schema.tables 
  WHERE table_schema = 'test' 
  AND table_name in ('example_table1','example_table2');

+----------------+--------------+
| TABLE_NAME     | TIDB_PK_TYPE |
+----------------+--------------+
| example_table2 | ~!@NONCLUSTERED@!~ |
| example_table1 | ~!@NONCLUSTERED@!~ |
+----------------+--------------+
```

![`smart`](NonClusteredTableWithoutPrimaryKey_ja_001_20231116.png)
------------------------------------------------------------------------------
クラスタ化されていない隠しプライマリキーの場合、各行はTiKV 単一のキーと値のペアのエントリにも対応します。このシナリオでは、TiDBは`_tidb_rowid`という名前の隠しプライマリキーカラムを生成します。

`_tidb_rowid`は64ビットの符号付き整数（BIGINT）です。各行には固有の`_tidb_rowid`があり、基盤となるストレージエンジン内の対応するデータを検索してアクセスするために使用されます。`_tidb_rowid`はTiDBの隠しカラムで、`SHOW COLUMNS`コマンドでは表示できません。`_tidb_rowid`はTiDBによって自動的に生成および管理され、直接変更したり手動で操作したりすることはできないことに注意します。

クラスタ化されていない隠しプライマリキーを使用してテーブルを作成するには、スライドのようにプライマリキーを指定せずにテーブルを作成するだけです。

TiKV `KV` エントリは、次の`key`と`value`で構成されています。
- キーは、テーブル`ID`のプレフィックスが付いた非表示のプライマリキーカラム`_tidb_rowid`です。
- 値は行のすべてのカラムで構成されます。
