人大金仓数据库解决了兼容oracle的索引失效问题

关键字

索引失效,禁用索引,启用索引,索引重建、人大金仓、

问题描述

Oracle能够通过语句设置,使索引失效,支持设置索引的启用禁用操作

create table t1(c1 int,c2 varchar(10));

create index idx_t1 on t1(c1);

--禁用索引,设置索引失效

alter index idx_t1 unusable;

--启用索引,重建索引

alter index idx_t1 rebuild;

问题分析

KES不具备设置索引启用,禁用的能力。

解决方案

create index语句添加usable、unusable支持创建索引时指定索引状态,未指定时默认为启用状态。

新增语法:

CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ]

ON [ ONLY ] table_name [ USING method ]

( { column_name | ( expression ) } [ COLLATE collation ]

[ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )

[ INCLUDE ( column_name [, ...] ) ]

[ WITH ( storage_parameter = value [, ... ] ) ]

[ TABLESPACE tablespace_name ]

[ UNUSABLE | USABLE ]

[ WHERE predicate ]

描述:

unusable 创建一个不可用状态的索引

usable 创建一个可用状态的索引,默认状态

ALTER INDEX name UNUSABLE

ALTER INDEX name REBUILD

--create index使用

create table tab_btree (id int,name text);

insert into tab_btree values(generate_series(1,100000),md5(random()::text));

create index i_btree on tab_btree using btree(id);

analyze;

explain (costs off) select * from tab_btree where id < 10;

-- alter index name unusable

alter index i_btree unusable;

explain (costs off) select * from tab_btree where id < 10;

-- alter index name rebuild

alter index i_btree rebuild;

explain (costs off) select * from tab_btree where id < 10;

参考资料

相关推荐
老大白菜4 分钟前
MongoDB基本操作
数据库·mongodb
小小小妮子~1 小时前
深入解读MVCC中的三大日志:Undo Log、Redo Log和B-Log
服务器·数据库·oracle·日志
vvw&1 小时前
如何在 Ubuntu 22.04 上安装 Cassandra NoSQL 数据库教程
linux·运维·服务器·数据库·ubuntu·nosql
我自是年少韶华倾负2 小时前
Mysql数据实时同步到Es上
数据库·mysql·elasticsearch
长安不及十里2 小时前
Spring Security 搭建一套基于 JWT 的 OAuth 2.0 架构
数据库·spring·架构
努力的小雨2 小时前
KES(KingBaseES)集群部署实战
数据库·后端
~小安同学3 小时前
Redis下载与安装
数据库
不惑_3 小时前
数字化转型 · OCR 技术如何打破效率瓶颈?
数据库·ocr
高铭杰3 小时前
Postgresql源码(139)vim直接修改postgresql表文件的简单实例
数据库·postgresql·vim
LabVIEW开发3 小时前
LabVIEW项目如何选择数据库
数据库·labview