📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

インデックスを追加



ALTER TABLE.. ADD INDEXステートメントは、既存のテーブルにインデックスを追加します。この操作は TiDB ではオンラインで実行されるため、インデックスの追加によってテーブルへの読み取りや書き込みがブロックされることはありません。

ヒント:

TiDB分散実行フレームワーク(DXF)使用すると、このステートメントの操作を高速化できます。

あらすじ

AlterTableStmt
ALTERIGNORETABLETableNameAddIndexSpec,
AddIndexSpec
ADDPRIMARYKEYKEYINDEXIF NOT EXISTSUNIQUEKEYINDEXIdentifierUSINGIdentifierTYPEIndexTypeFULLTEXTKEYINDEXIndexName(IndexPartSpecification,)IndexOption
IndexPartSpecification
ColumnName(LengthNum)(Expression)ASCDESC
IndexOption
KEY_BLOCK_SIZE=LengthNumUSINGIndexTypeWITHPARSERIdentifierCOMMENTstringLitVISIBLEINVISIBLEGLOBALLOCAL
IndexType
BTREEHASHRTREE

mysql> CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, c1 INT NOT NULL); Query OK, 0 rows affected (0.11 sec) mysql> INSERT INTO t1 (c1) VALUES (1),(2),(3),(4),(5); Query OK, 5 rows affected (0.03 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> EXPLAIN SELECT * FROM t1 WHERE c1 = 3; +-------------------------+----------+-----------+---------------+--------------------------------+ | id | estRows | task | access object | operator info | +-------------------------+----------+-----------+---------------+--------------------------------+ | TableReader_7 | 10.00 | root | | data:Selection_6 | | └─Selection_6 | 10.00 | cop[tikv] | | eq(test.t1.c1, 3) | | └─TableFullScan_5 | 10000.00 | cop[tikv] | table:t1 | keep order:false, stats:pseudo | +-------------------------+----------+-----------+---------------+--------------------------------+ 3 rows in set (0.00 sec) mysql> ALTER TABLE t1 ADD INDEX (c1); Query OK, 0 rows affected (0.30 sec) mysql> EXPLAIN SELECT * FROM t1 WHERE c1 = 3; +------------------------+---------+-----------+------------------------+---------------------------------------------+ | id | estRows | task | access object | operator info | +------------------------+---------+-----------+------------------------+---------------------------------------------+ | IndexReader_6 | 0.01 | root | | index:IndexRangeScan_5 | | └─IndexRangeScan_5 | 0.01 | cop[tikv] | table:t1, index:c1(c1) | range:[3,3], keep order:false, stats:pseudo | +------------------------+---------+-----------+------------------------+---------------------------------------------+ 2 rows in set (0.00 sec)

MySQLとの互換性

  • TiDB は、MySQL との互換性のために、 HASHBTREERTREEなどのインデックス タイプを構文で受け入れますが、それらを無視します。

  • SPATIALインデックスはサポートされていません。

  • TiDB Self-Managed およびTiDB Cloud Dedicated はFULLTEXT構文の解析をサポートしていますが、 FULLTEXTインデックスの使用はサポートしていません。

    注記:

    現在、特定の AWS リージョンのTiDB Cloud StarterとTiDB Cloud EssentialインスタンスのみがFULLTEXT構文と索引をサポートしています。

  • 降順インデックスはサポートされていません( MySQL 5.7と同様)。

  • CLUSTEREDタイプの主キーをテーブルに追加することはサポートされていません。 CLUSTEREDタイプの主キーの詳細については、クラスター化インデックスを参照してください。

  • PRIMARY KEYインデックス オプションを使用して、 UNIQUE INDEXまたはGLOBALグローバル インデックスとしてグローバルインデックスことは、パーティション化パーティション化されたテーブルの TiDB 拡張機能であり、MySQL とは互換性がありません。

関連項目

このページは役に立ちましたか?