视图

  • 由查询语句定义的虚拟表;从视图中看到的数据可能来自数据库中的一张或多张表,也可能来自外部;

  • 使用视图的原因一般有:

    * 使复制的查询易于理解和使用;

    * 安全原因;

    * 表一些函数返回的结果映射成视图;

  • 一般数据库提供的视图是只读的;

创建视图

create table users(
id int,
user_name varchar(40),
password varchar(40),
user_email text,
user_mark text
); //创建视图过滤掉password字段;
create [temp] view vw_users as select id, user_name, user_email, user_mark from users; //然后像查询表一样查询视图 //视图也可以为查询的各列重命名; create view rename_users(no, name, email, mark)
as select id, user_name, user_email, user_mark from users;

可更新视图

  • Postgresql9.3开始支持直接在视图上进行insert,delete,update等操作;

删除视图

drop view vn_name;

索引

  • 索引是数据库中一种快速查询数据的方法,索引中记录了表中一列或多列的值与其物理位置之间的对应关系;
  • 建立索引加快了对表中记录的查找或排序;但同时索引也有代价:

    * 增加了数据库的存储空间;

    * 在插入和修改数据时要花费较多的时间,因为索引也要随之更新;

索引分类

  • B-tree: 最常用(默认开启)的索引,适合处理等值查询和范围查询;
<
<=
=
>=
>
  • R-tree: 特別适合于空间资料;
<<
&<
&>
>>
@
~=
&&
  • Hash: 只能处理简单的等值查询;
  • GiST: 不是一种单独的索引类型,而是一种架构,可以在架构上实现很多不同的索引策略;
  • SP-GiST: 空间分区GiST索引,主要是通过一些新的缩索引算法提高GiST索引在某个情况下的性能;
  • GIN: 反转索引,可以处理包含很多个键的值,如数组等;与GiST类似,GIN支持用户定义的索引策略;

创建索引

//创建一个通信信息的表,电话号码为数组类型
create table contacts(
id int primary key,
name varchar(40),
phone varchar(32)[],
address text
); //创建B-tree索引 create index idx_contacts_name on contacts (name); //如果想要按照电话号码查找,可以使用gin索引 create index idx_contacts_phone on contacts using gin(phone); select * from contacts where phone @> array['xxx'::varchar(32)]; //@>是数组操作符,表示包含;
  • 指定存储参数
create ubdex idx_contacts_name on contacts(name) width(fillfactor=50);
  • 升/降序
create index idx_contacts_name on contacts(name [desc|asc]);

//指定非控制排前面/后面

create index idx_contacts_name on contacts(name [desc|asc] nulls [first|last]);

并发创建索引

  • 通常在创建索引时PostgreSQL会锁定表,直到索引创建完毕,仅可以读取表而不能进行其他操作;
  • PostgreSQL支持不长时间阻塞更新情况下创建索引;此时PostgreSQL 会执行表的两次扫描,因此该方法需要更长的时间创建索引;
create index concurrently idx_contacts_name on contacts(name);   //使用concurrently
  • 并发创建索引的时如果创建过程被强行取消,可能会留下一个无效的索引,这个索引仍然会导致更新变慢;

    * 如果创建的是一个唯一索引,这个无效索引还会导致插入重复值失败;

  • 索引填充因子: 定义该索引每页上的可用空间量,适应以后表数据的扩展并减小了页拆分的可能性,从 1 到 100 之间的某个值,指定索引页保留为空的百分比;

修改索引

  • 索引改名:
alter index idx_contacts_name rename to idx_contacts_name_new;
  • 索引移动表空间
alter index idx_contacts_name set tablespace tb_test;
  • 设置索引填充因子
alter index idx_contacts_name set (fillfactor = 75);
  • 把索引的填充因子设置为默认值
alter index idx_contacts_name reset (fillfactor);
  • 查看索引信息
\d+ idx_contacts_name

删除索引

drop index [if exists] name [cascade | restricr]

psql-09表:视图和索引的更多相关文章

  1. 查看Oracle当前用户下的信息(用户,表视图,索引,表空间,同义词,存储过程函数,约束条件)

    0.表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user ...

  2. IOS之表视图添加索引

    我们要实现的效果如下. 1.修改ControlView.h,即添加变量dict,用于存储TabelView的数据源. #import <UIKit/UIKit.h> @interface  ...

  3. IOS开发之表视图添加索引

    我们要实现的效果如下. 1.修改ControlView.h,即添加变量dict,用于存储TabelView的数据源. #import <UIKit/UIKit.h> @interface  ...

  4. iOS企业级开发初级课程-表视图(13集)

    首先了解了表视图的组成.表视图类的构成.表视图的分类以及表视图的两个重要协议(委托协议和数据源协议),对表视图有了一个整体上的认识.接下来我们掌握了如何实现简单表视图和分节表视图,以及表视图中索引.搜 ...

  5. 表视图控制器(TableViewController)(三) 、 表视图搜索

    1 乐库的设置界面 1.1 问题 tableView分为静态(static)和动态(dynamic),之前使用的都是动态的tableView,表视图的有多少分区.有多少行以及每一行显示的内容都不是固定 ...

  6. 查看Oracle当前用户下的(表视图,同义词...)

    查看Oracle当前用户下的信息(用户,表视图,索引,表空间,同义词,存储过程函数,约束条件) 0.表空间 SQL>select username,default_tablespace from ...

  7. 查询SQLServer2005中某个数据库中的表结构、索引、视图、存储过程、触发器以及自定义函数

    查询SQLServer2005中某个数据库中的表结构.索引.视图.存储过程.触发器以及自定义函数 2013-03-11 09:05:06|  分类: SQL SERVER|举报|字号 订阅     ( ...

  8. 数据库T-SQL语言操作(T-SQL语句、数据库、表、视图、索引)

    T-SQL语言 按用途分四部分 数据定义语言(CREATE,DROP,ALTER) 数据操作语言(INSERT,DELETE,UPDATE) 数据查询语言(SELECT) 数据控制语言(GRANT,R ...

  9. iOS开发高级分享 - iOS的可折叠表视图

    导言 我曾经开发过一个iphone应用程序,它显示了大量的输入,这些输入分为不同的类别,在`UITableView`...若要更改其中一个输入的值,用户按下表视图中的对应行,并在出现的单独屏幕中更改该 ...

随机推荐

  1. 深夜重温JavaScript中的对象和数组

    这一块实际上已经学过了,因为没有学好,在工作过程中遇到一些对象或者数组的操作,会去百度查找,浪费了许多宝贵的时间,所以特地再拐过头来重新学习. 对象 基本概念: 对象这种基本的数据结构还有其他很多种叫 ...

  2. 为什么全世界都对HTTPS抛出了橄榄枝,HTTPS到底有什么好?HTTPS如何配置?

    整个互联网世界,正从"裸奔"向HTTPS时代转型. 淘宝.天猫在2015年完成规模巨大的数据"迁徙",将百万计的页面从HTTP切换到HTTPS:苹果要求所有iO ...

  3. Web jquery表格组件 JQGrid 的使用 - 8.Pager、新增数据、查询、刷新、查看数据

    系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...

  4. ThinkPHP真正疑难问题笔记

    如何选择线程安全版本还是非线程安全版本: http://www.cnblogs.com/Alight/p/3389113.html(看webserver处理请求时, 使用的是多线程的方式还是 多进程的 ...

  5. Pandas-数据探索

    Pandas包对数据的常用探索功能,方便了解数据描述性属性. 目录 基础属性 shape indexs columns values dtype/dtypes 汇总和计算描述统计 count() va ...

  6. Windows下安装MongoDB

    项目当中用到MongoDB最为NoSQL数据库,运行的平台为 Windows Server 2008,下面是MongoDB的安装过程笔记: 1.下载软件 官方下载地址:http://www.mongo ...

  7. 【PHP升级】CentOS6.3编译安装 PHP5.4.38

    先前安装的PHP5.3.28(参考:CentOS6.3编译安装Nginx1.4.7 + MySQL5.5.25a + PHP5.3.28),现在准备升级PHP到5.4.38,有如下几个地方需要重新编译 ...

  8. Oracle 查看某表 被哪些表外键引用

    分2步骤: 1. select * from user_constraints e where e.table_name='xxx'; 2. select a.constraint_type,a.ta ...

  9. linux网络配置

    VMware下,centos系统,安装好后,一直连不上外网.在网上查了好多资料,都没有找到解决的办法.最后,把自己的解决方案,写到下面. 其中ipaddr是window下vmnet8的ip地址,在do ...

  10. JS 删除对象属性

    updateNode: function(data) { if(data) { this.root[data.id] = data; } }, removeNodes: function(idsArr ...