背景:
今天晚上完全带偏了,本意是想研究一下mysql方式数据的几种方式,测试时总会有点小问题,一再被打断。
数据库版本:
pg11.6、mysql5.7.29、oracle11.2.0.4
测试内容
同一列是否支持创建两个不同步索引
测试语句:
create table tt(id int primary key,val int ,desci varchar(100));
create index idx_val on tt(val);
create index idx_val2 on tt(val);
测试结果:
1、pg支持,无告警信息
satdb=# \d tt;
Table “public.tt”
Column | Type | Collation | Nullable | Default
--------±-----------------------±----------±---------±--------
id | integer | | not null |
val | integer | | |
desci | character varying(100) | | |
Indexes:
“tt_pkey” PRIMARY KEY, btree (id)
“idx_val” btree (val)
“idx_val2” btree (val)
2、mysql的都支持,但mysql有告警信息
mysql> create index idx_val2 on tt(val);
Query OK, 0 rows affected, 1 warning (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 1
3、oracle直接报错
SQL> create index idx_val2 on tt(val);
create index idx_val2 on tt(val)
*
ERROR at line 1:
ORA-01408: such column list already indexed
疑问:
按照常理来说,在一个列上创建不同的两个索引,完成没有必要。但pg完成支持,意义在哪里。