一、对表建立索引和删除索引:
建立索引:
CREATE INDEX语法格式:
CREATE INDEX index_name ON [vc_name.][database_name.]table_name(co
lumn_name) [key_block_size = size_value] [key_dc_size=num] USING H
ASH GLOBAL;
举例:
示例 1:创建默认哈希索引。
gbase> CREATE TABLE t1(a int,b varchar(10));
Query OK, 0 rows affected
gbase> CREATE INDEX idx1 on t1(a) ;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
gbase> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE "t1" (
"a" int(11) DEFAULT NULL,
"b" varchar(10) DEFAULT NULL,
KEY "idx1" ("a") USING HASH GLOBAL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
示例 2:创建 GLOBAL 哈希索引,设置 key_dc_size 值为 1000;
gbase> CREATE TABLE t (a INT);
Query OK, 0 rows affected
gbase> CREATE INDEX idx_t_a ON t(a) key_DC_size = 1000 USING HASH
GLOBAL;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
gbase> SHOW CREATE TABLE t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE "t" (
"a" int(11) DEFAULT NULL,
KEY "idx_t_a" ("a") KEY_DC_SIZE=1000 USING HASH GLOBAL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
说明:
二进制类型的列不适合使用 HASH INDEX,或者该列数据量较大,但
DISTINCT 值较少时,也不适合使用 HASH INDEX。
-
同一表上不能创建相同名称的哈希索引,同一表的同一列上能且只
能创建一个哈希索引,任何 GBase 8a MPP Cluster 支持的数据类
型的列上都可以创建哈希索引。 -
创建哈希索引后,基于索引列的等值查询的性能会提高,尤其是表
中的数据量非常大的情况,在小数据量的情况下,哈希索引对性能
的提升效果不明显
删除索引:
语法格式:
DROP INDEX
DROP INDEX index_name ON [vc_name.][database_name.]table_name;
删除索引举例:
gbase> DROP INDEX idx3 ON t1;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
二、如何查看查询语句中是否用到了hash 索引,可以通过查看查询计划的方式:
create table index5(id int ,name varchar(16),password varchar(16));
CREATE INDEX idx3 on index5(name) key_block_size=16384 USING HASH GLOBAL;
insert into index5(name,password) values(‘cat01’,‘123’);
insert into index5(name,password) values(‘cat02’,‘234’);
explain extended select id from index5 where id=1 order by password;

查询计划的
May use index: vcname000001.test.index5.id{Smart Index}
这部分内容代表的就是使用了hash索引,一般带有where条件的查询语句会使用hash 索引。




