05_greenplum定义数据库对象_序列_索引_视图

一、创建和使用序列

序列常用于新增记录时自动生成唯一标识符;

补充:

id自增可以用:

drop table tb03 ;
create table tb03(
id serial,
name varchar(255)
) distributed by (id)
;

insert into tb03 (name) values ('12443');
insert into tb03 (name) values ('237671');
insert into tb03 (name) values ('2384781');

select * from tb03 ;

1、创建序列

使用CREATE SEQUENCE 命令来创建并初始化一个给定名称的单列序列表;

例:CREATE SEQUENCE myserial START 101;(从101开始递增)

2、使用序列

 代码:

create sequence myserial start 101
;

select * from myserial ;

create table tb02(
id int not null default nextval('myserial'),
amount varchar(255)
)
;

insert into tb02 (amount) values ('12443');
insert into tb02 (amount) values ('237671');
insert into tb02 (amount) values ('2384781');

select * from tb02;

3、修改序列

 

 注:修改后起点为105;

4、删除序列

 

二、GP中的索引使用

 

 注:分区表中也可以创建索引

1、创建索引时需综合考虑的问题

2、索引类型

注:B-tree通过二分法算法扫描数据;

 (1)关于位图索引

 注:在独立的分区中唯一索引才是唯一的;

 

(2)何时使用位图索引

 

(3)何时不宜使用位图索引

3、创建索引

 

 

注:idx_01是索引名称,表创建索引子分区也会默认创建;

注:\d+ table_name(可查看表中由那些索引)

4、查看索引使用

通过EXPLAIN 命令来检查查询是否使用了索引,在输出结果中查找下面的查询节点以确认索引的使用;

 

 

 代码:

show enable_seqscan(因为gp是顺序扫描,如果返回的是on就是顺序扫描)

set enable_seqscan = off ;(关闭顺序扫描才能使用索引查询)

 

(1)很难通过一个通用的程序来决定哪些场景要使用索引,大量的测试是必要的:

5、重建索引

某些情况下,性能变差可以通过REINDEX来重建索引;

重建索引将使用存储在索引表中的数据建立新的索引取代旧的索引;

更新和删除操作不更新位图索引:

6、删除索引

 

三、创建和管理视图

 对于哪些使用频繁或比较复杂的查询,通过创建视图(VIEW)可以把其当做访问表一样使用select语句来访问;

视图不能存在于物理介质上;

1、创建视图

 

2、删除视图

 

posted @   小王同学学编程  阅读(427)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
levels of contents
点击右上角即可分享
微信分享提示