openGauss的索引与视图
一、索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
步骤 1:创建索引:
⚫在普通表 property 上创建索引
CREATE INDEX finance.idx_property ON finance.property(pro_c_id DESC,pro_income,pro_purchase_time) ;
结果如下:
CREATE INDEX
步骤 2:使用元命令,查看创建的索引:
\di idx_property
获得结果为:
List of relations Schema | Name | Type | Owner | Table | Storage
---------+--------------+-------+----------+----------+---------
finance | idx_property | index | bank_app | property |
(1 row)
步骤 3:重命名索引:
⚫在普通表 property 上重建及重命名索引。
DROP INDEX finance.idx_property;
CREATE INDEX finance.idx_property ON finance.property(pro_c_id DESC,pro_income,pro_purchase_time);
重命名索引
ALTER INDEX finance.idx_property RENAME TO idx_property_temp;
步骤 4:使用元命令,查看创建的索引:
\di idx_property_temp
获得结果为:
List of relations Schema | Name | Type | Owner | Table | Storage
---------+-------------------+-------+----------+----------+---------
finance | idx_property_temp | index | bank_app | property |
(1 row)
步骤 5:删除索引。
⚫删除索引 idx_property_temp。
DROP INDEX finance.idx_property_temp;
二、视图
视图是一个虚拟表,是 sql 的查询结果,其内容由查询定义。对于来自多张关联表的复杂查询,就不得不使用十分复杂的 SQL 语句进行查询,造成极差的体验感。使用视图之后,可以极大的简化操作,使用视图不需要关心相应表的结构、关联条件等。
步骤 1 :创建视图:
针对“查询用户编号在银行卡表中出现的用户的编号,用户姓名和身份证” 的查询,创建视图。
CREATE VIEW finance.v_client as SELECT c_id,c_name,c_id_card FROM finance.client WHERE EXISTS (SELECT * FROM finance.bank_card WHERE client.c_id = bank_card.b_c_id);
使用视图进行查询。
SELECT * FROM finance.v_client;
结果如下:
c_id | c_name | c_id_card
------+--------+----------------------
1 | 左晓婷 | 340211199301010001
3 | 朱长刚 | 340211199301010003
5 | 安艳芳 | 340211199301010005
7 | 傅小芳 | 340211199301010007
9 | 邵小婷 | 340211199301010009
10 | 章晓峰 | 340211199301010010
12 | 冯长强 | 340211199301010012
14 | 赵晓鹏 | 340211199301010014
16 | 尹高峰 | 340211199301010016
18 | 唐高伟 | 340211199301010018
19 | 洪高鹏 | 340211199301010019
21 | 邱长强 | 340211199301010021
23 | 潘成轩 | 340211199301010023
24 | 季小梅 | 340211199301010024
26 | 倪兰芳 | 340211199301010026
27 | 姜小芳 | 340211199301010027
29 | 娄晓婷 | 340211199301010029
(17 rows)
步骤 2:修改视图内容:
修改视图,在原有查询的基础上,过滤出信用卡用户。
CREATE OR REPLACE VIEW finance.v_client as
SELECT c_id,c_name,c_id_card
FROM finance.client
WHERE EXISTS (SELECT * FROM finance.bank_card WHERE client.c_id = bank_card.b_c_id and bank_card.b_type='信用卡');
使用视图进行查询。
select * from finance.v_client;
结果如下:
c_id | c_name | c_id_card
------+--------+----------------------
1 | 左晓婷 | 340211199301010001
3 | 朱长刚 | 340211199301010003
5 | 安艳芳 | 340211199301010005
7 | 傅小芳 | 340211199301010007
9 | 邵小婷 | 340211199301010009
10 | 章晓峰 | 340211199301010010
12 | 冯长强 | 340211199301010012
14 | 赵晓鹏 | 340211199301010014
16 | 尹高峰 | 340211199301010016
18 | 唐高伟 | 340211199301010018
(10 rows)
步骤 3 修改视图名称:
ALTER VIEW finance.v_client RENAME TO v_client_new;
步骤 4:删除视图。
将 v_client 视图删除,删除视图不影响基表。
DROP VIEW finance.v_client_new;
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!