首批通过分布式安全可靠测评,为关键业务系统打造
CREATE INDEX
更新时间:2023-11-10 11:56:11
描述
该语句用来创建索引。索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构。其作用主要在于提高查询的速度,降低数据库系统的性能开销。
OceanBase 数据库当前版本支持的索引类型包含唯一索引和非唯一索引,创建索引时可以通过 STORING(column_name_list) 指定索引表上的冗余列。索引表的冗余列除了包含用户指定添加的列外,还会自动添加上主键表的主键列(如果无主键表则包含 Hidden PK)。
说明
在 OceanBase 数据库 Oracle 模式下,如果删除表中的任一索引列,则所创建的索引失效。
语法
CREATE [UNIQUE] INDEX index_name
ON table_name (index_col_name,...)
[index_type] [index_options]
index_type:
USING BTREE
index_options:
index_option [index_option...]
index_option:
GLOBAL | LOCAL
| COMMENT 'string'
| BLOCK_SIZE [=] size
| STORING(column_name_list)
| VISIBLE | INVISIBLE
index_col_name:
column_name [(length)] [ASC | DESC]
column_name_list:
column_name [, column_name...]
参数解释
| 参数 | 描述 |
|---|---|
| index_name | 指定要创建的索引名称。 |
| table_name | 指过索引所属的表名。 |
| index_col_name | 指定索引的列名,默认为 ASC。 建立索引的排序方式为:首先以 index_col_name 中第一个列的值排序;该列值相同的记录,按下一列名的值排序;以此类推。
注意每个列名后都支持 ASC(升序),不支持 DESC(降序)。 |
| column_name | 用于创建索引的列名。 |
| index_type | 索引类型,只支持 USING BTREE,以 B-Tree 为索引。 |
| UNIQUE | 指定为唯一索引。 |
| index_option | 指定索引选项,多个 index_option 以空格分隔。 |
| GLOBAL | LOCAL | 指定该索引是全局索引或局部索引,默认是 GLOBAL。 |
| COMMENT | 指定注释。 |
| BLOCK_SIZE | 指定微块大小。 |
| STORING | 表示索引表中冗余存储某些列,以提高系统查询性能。 |
示例
创建表
tbl1的索引。/* 创建表 tbl1 */ obclient> CREATE TABLE tbl1 (col1 INT PRIMARY KEY, col2 VARCHAR(10)); Query OK, 0 rows affected /* 创建表 tbl1 的索引 */ obclient> CREATE INDEX tbl1_idx1 ON tbl1 (col1, col2); Query OK, 0 rows affected /* 查看表 tbl1 的索引 */ obclient> SELECT * FROM USER_INDEXES WHERE table_name='TBL1'\G *************************** 1. row *************************** INDEX_NAME: TBL1_OBPK_1657184021525727 INDEX_TYPE: NORMAL TABLE_OWNER: SYS TABLE_NAME: TBL1 TABLE_TYPE: TABLE UNIQUENESS: UNIQUE COMPRESSION: ENABLED PREFIX_LENGTH: NULL TABLESPACE_NAME: NULL INI_TRANS: NULL MAX_TRANS: NULL INITIAL_EXTENT: NULL NEXT_EXTENT: NULL MIN_EXTENTS: NULL MAX_EXTENTS: NULL PCT_INCREASE: NULL PCT_THRESHOLD: NULL INCLUDE_COLUMN: NULL FREELISTS: NULL FREELIST_GROUPS: NULL PCT_FREE: NULL LOGGING: NULL BLEVEL: NULL LEAF_BLOCKS: NULL DISTINCT_KEYS: NULL AVG_LEAF_BLOCKS_PER_KEY: NULL AVG_DATA_BLOCKS_PER_KEY: NULL CLUSTERING_FACTOR: NULL STATUS: VALID NUM_ROWS: NULL SAMPLE_SIZE: NULL LAST_ANALYZED: NULL DEGREE: 1 INSTANCES: NULL PARTITIONED: NO TEMPORARY: NULL GENERATED: NULL SECONDARY: NULL BUFFER_POOL: NULL FLASH_CACHE: NULL CELL_FLASH_CACHE: NULL USER_STATS: NULL DURATION: NULL PCT_DIRECT_ACCESS: NULL ITYP_OWNER: NULL ITYP_NAME: NULL PARAMETERS: NULL GLOBAL_STATS: NULL DOMIDX_STATUS: NULL DOMIDX_OPSTATUS: NULL FUNCIDX_STATUS: NULL JOIN_INDEX: NO IOT_REDUNDANT_PKEY_ELIM: NULL DROPPED: NO VISIBILITY: VISIBLE DOMIDX_MANAGEMENT: NULL SEGMENT_CREATED: NULL ORPHANED_ENTRIES: NULL INDEXING: NULL AUTO: NULL *************************** 2. row *************************** INDEX_NAME: TBL1_IDX1 INDEX_TYPE: NORMAL TABLE_OWNER: SYS TABLE_NAME: TBL1 TABLE_TYPE: TABLE UNIQUENESS: NONUNIQUE COMPRESSION: ENABLED PREFIX_LENGTH: NULL TABLESPACE_NAME: NULL INI_TRANS: NULL MAX_TRANS: NULL INITIAL_EXTENT: NULL NEXT_EXTENT: NULL MIN_EXTENTS: NULL MAX_EXTENTS: NULL PCT_INCREASE: NULL PCT_THRESHOLD: NULL INCLUDE_COLUMN: NULL FREELISTS: NULL FREELIST_GROUPS: NULL PCT_FREE: NULL LOGGING: NULL BLEVEL: NULL LEAF_BLOCKS: NULL DISTINCT_KEYS: NULL AVG_LEAF_BLOCKS_PER_KEY: NULL AVG_DATA_BLOCKS_PER_KEY: NULL CLUSTERING_FACTOR: NULL STATUS: VALID NUM_ROWS: NULL SAMPLE_SIZE: NULL LAST_ANALYZED: NULL DEGREE: 1 INSTANCES: NULL PARTITIONED: NO TEMPORARY: NULL GENERATED: NULL SECONDARY: NULL BUFFER_POOL: NULL FLASH_CACHE: NULL CELL_FLASH_CACHE: NULL USER_STATS: NULL DURATION: NULL PCT_DIRECT_ACCESS: NULL ITYP_OWNER: NULL ITYP_NAME: NULL PARAMETERS: NULL GLOBAL_STATS: NULL DOMIDX_STATUS: NULL DOMIDX_OPSTATUS: NULL FUNCIDX_STATUS: NULL JOIN_INDEX: NO IOT_REDUNDANT_PKEY_ELIM: NULL DROPPED: NO VISIBILITY: VISIBLE DOMIDX_MANAGEMENT: NULL SEGMENT_CREATED: NULL ORPHANED_ENTRIES: NULL INDEXING: NULL AUTO: NULL 2 rows in set创建表
tbl2的唯一索引。/* 创建表 tbl2 */ obclient> CREATE TABLE tbl2 (col1 INT, col2 INT, col3 INT, PRIMARY KEY(col1)); Query OK, 0 rows affected /* 创建表 tbl2 的唯一索引索引 */ obclient> CREATE UNIQUE INDEX tbl2_idx2 ON tbl2(col2) STORING(col3); Query OK, 0 rows affected /* 查看表 tbl2 的唯一索引 */ obclient> SELECT * FROM USER_INDEXES WHERE table_name='TBL2'\G *************************** 1. row *************************** INDEX_NAME: TBL2_OBPK_1657184907465223 INDEX_TYPE: NORMAL TABLE_OWNER: SYS TABLE_NAME: TBL2 TABLE_TYPE: TABLE UNIQUENESS: UNIQUE COMPRESSION: ENABLED PREFIX_LENGTH: NULL TABLESPACE_NAME: NULL INI_TRANS: NULL MAX_TRANS: NULL INITIAL_EXTENT: NULL NEXT_EXTENT: NULL MIN_EXTENTS: NULL MAX_EXTENTS: NULL PCT_INCREASE: NULL PCT_THRESHOLD: NULL INCLUDE_COLUMN: NULL FREELISTS: NULL FREELIST_GROUPS: NULL PCT_FREE: NULL LOGGING: NULL BLEVEL: NULL LEAF_BLOCKS: NULL DISTINCT_KEYS: NULL AVG_LEAF_BLOCKS_PER_KEY: NULL AVG_DATA_BLOCKS_PER_KEY: NULL CLUSTERING_FACTOR: NULL STATUS: VALID NUM_ROWS: NULL SAMPLE_SIZE: NULL LAST_ANALYZED: NULL DEGREE: 1 INSTANCES: NULL PARTITIONED: NO TEMPORARY: NULL GENERATED: NULL SECONDARY: NULL BUFFER_POOL: NULL FLASH_CACHE: NULL CELL_FLASH_CACHE: NULL USER_STATS: NULL DURATION: NULL PCT_DIRECT_ACCESS: NULL ITYP_OWNER: NULL ITYP_NAME: NULL PARAMETERS: NULL GLOBAL_STATS: NULL DOMIDX_STATUS: NULL DOMIDX_OPSTATUS: NULL FUNCIDX_STATUS: NULL JOIN_INDEX: NO IOT_REDUNDANT_PKEY_ELIM: NULL DROPPED: NO VISIBILITY: VISIBLE DOMIDX_MANAGEMENT: NULL SEGMENT_CREATED: NULL ORPHANED_ENTRIES: NULL INDEXING: NULL AUTO: NULL *************************** 2. row *************************** INDEX_NAME: TBL2_IDX2 INDEX_TYPE: NORMAL TABLE_OWNER: SYS TABLE_NAME: TBL2 TABLE_TYPE: TABLE UNIQUENESS: UNIQUE COMPRESSION: ENABLED PREFIX_LENGTH: NULL TABLESPACE_NAME: NULL INI_TRANS: NULL MAX_TRANS: NULL INITIAL_EXTENT: NULL NEXT_EXTENT: NULL MIN_EXTENTS: NULL MAX_EXTENTS: NULL PCT_INCREASE: NULL PCT_THRESHOLD: NULL INCLUDE_COLUMN: NULL FREELISTS: NULL FREELIST_GROUPS: NULL PCT_FREE: NULL LOGGING: NULL BLEVEL: NULL LEAF_BLOCKS: NULL DISTINCT_KEYS: NULL AVG_LEAF_BLOCKS_PER_KEY: NULL AVG_DATA_BLOCKS_PER_KEY: NULL CLUSTERING_FACTOR: NULL STATUS: VALID NUM_ROWS: NULL SAMPLE_SIZE: NULL LAST_ANALYZED: NULL DEGREE: 1 INSTANCES: NULL PARTITIONED: NO TEMPORARY: NULL GENERATED: NULL SECONDARY: NULL BUFFER_POOL: NULL FLASH_CACHE: NULL CELL_FLASH_CACHE: NULL USER_STATS: NULL DURATION: NULL PCT_DIRECT_ACCESS: NULL ITYP_OWNER: NULL ITYP_NAME: NULL PARAMETERS: NULL GLOBAL_STATS: NULL DOMIDX_STATUS: NULL DOMIDX_OPSTATUS: NULL FUNCIDX_STATUS: NULL JOIN_INDEX: NO IOT_REDUNDANT_PKEY_ELIM: NULL DROPPED: NO VISIBILITY: VISIBLE DOMIDX_MANAGEMENT: NULL SEGMENT_CREATED: NULL ORPHANED_ENTRIES: NULL INDEXING: NULL AUTO: NULL 2 rows in set