人大金仓数据库解决了兼容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;

参考资料

相关推荐
鑫仔的记忆37 分钟前
【Oracle】视图用法和示例
数据库·oracle
和道一文字yyds1 小时前
MySQL 中如何解决深度分页的问题?什么是 MySQL 的主从同步机制?它是如何实现的?如何处理 MySQL 的主从同步延迟?
android·数据库·mysql
V+zmm101342 小时前
校园快递平台系统(小程序论文源码调试讲解)
java·数据库·微信小程序·小程序·毕业设计
m0_748251352 小时前
redis批量删除namespace下的数据
数据库·redis·缓存
Chasing追~2 小时前
SQLite数据库从0到1
数据库·c++·qt·sqlite
彦青i2 小时前
python 剪切音频
数据库·python·音视频
别致的影分身3 小时前
Redis 分布式锁
数据库·redis·分布式
阿乾之铭3 小时前
MySQL 性能优化
数据库·mysql·性能优化
行十万里人生5 小时前
Qt 对象树详解:从原理到运用
开发语言·数据库·qt·华为od·华为·华为云·harmonyos
松岛的枫叶5 小时前
【缓冲区】数据库备份的衍生问题,缓冲区在哪里?JVMor操作系统?(二)
数据库