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、删除视图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下