唯一索引

oracle 逻辑对象

元气小坏坏 提交于 2019-11-27 10:29:12
视图 视图的作用: a 让查询返回的字段更容易理解。 b 对复杂select语句的封装。 c 安全性。视图可以单独授权。对于数据量巨大的表,可以创建视图仅仅返回前100条数据,将该视图select权限开放。但是不开放表的select权限。 --grant create view to resource; --a 让查询返回的字段更容易理解 create or replace view vw_emp as select empno 员工号,ename 员工名,job 工作岗位,sal 工资 from emp; select *from vw_emp; --b 对复杂的sql语句进行封装 --、薪水大于1200的雇员,按照部门编号进行分组,分组后平均薪水必须大于1500,查询各分组的平均水平,按照工资的倒序进行排列。* create or replace view vw_avg_sal as select deptno,avg(sal) avg_sal from emp where sal>1200 group by deptno having avg(sal)>1500 order by avg(sal) desc; select * from vw_avg_sal; --c安全性 试图可以单独授权,对于数据量巨大的表,可以创建视图仅仅返回前100条数据,将该视图select权限开放

Neo4j 第二篇:图形数据库

筅森魡賤 提交于 2019-11-27 05:01:46
在深入学习图形数据库之前,首先理解属性图的基本概念。一个属性图是有向图,由顶点(Vertex),边(Edge),标签(Lable),关系类型(Relationship Type)和属性(Property)组成。 在属性图形中,节点和关系是最重要的实体,顶点也称作节点(Node),边也称作关系(Relationship)。所有的节点是独立存在的,但是可以为节点设置标签,那么拥有相同标签的节点属于一个分组,也就是一个集合。关系通过关系类型来分组,类型相同的关系属于同一个集合。节点可以有0个、1个或多个标签,但是关系必须设置关系类型,并且只能设置一个关系类型。 关系是有向的,关系的两端是起始节点和结束节点,通过有向的箭头来标识方向,节点之间的双向关系通过两个方向相反的关系来标识。 Neo4j图形数据库的查询语言是Cypher,用于操作和查询属性图,它是图形数据库语言中事实上的标准。 我的Neo4j系列的文章收录在: Neo4j 一,图形数据库的基本概念 使用Neo4j创建的图(Graph)基于属性图模型,在该模型中,每个实体都有ID(Identity)唯一标识,每个节点由标签(Lable)分组,每个关系都有一个唯一的关系类型。 属性图模型的基本概念: 实体(Entity) 是指节点(Node)和关系(Relationship); 每个实体都有一个唯一的ID; 通常情况下

谈谈唯一约束和唯一索引

蹲街弑〆低调 提交于 2019-11-26 23:50:56
摘自:https://www.cnblogs.com/mengbin0546/p/10308755.html 约束 全称完整性约束,它是关系数据库中的对象,用来存放插入到一个表中一列数据的规则,用来确保数据的准确性和一致性。 索引 数据库中用的最频繁的操作是数据查询,索引就是为了加速表中数据行的检索而创建的一种分散的数据结构。可以把索引类比成书的目录,有目录的肯定比没有目录的书,更方便查找。 唯一约束 保证在一个字段或者一组字段里的数据都与表中其它行的对应数据不同。和主键约束不同, 唯一约束允许为 NULL,只是只能有一行 。 唯一索引 不允许具有索引值相同的行,从而禁止重复的索引或键值。 唯一约束和唯一索引 都是为了保证表中被限制的字段不允许有重复的值,看起来功能是一样的,那为什么要设计这样两种一样的功能呢? 首先创建两个字段值一样的表 t1,t2, 并为 t1 表中的 col1 列设置 唯一约束 。 CREATE TABLE t1 ( col1 INT(11), col2 VARCHAR(20), CONSTRAINT t1_uq UNIQUE (col1) ); CREATE TABLE t2 ( col1 INT(11), col2 VARCHAR(20) ); 然后为表 t2 表中的 col1 列设置 唯一索引 CREATE UNIQUE INDEX t2_idx ON

唯一索引和普通索引的区别是什么,什么时候需要建唯一

狂风中的少年 提交于 2019-11-26 23:41:18
1. 知识背景 什么是索引? 一个索引是存储的表中一个特定列的值数据结构(最常见的是B-Tree)。索引是在表的列上创建。所以,要记住的关键点是索引包含一个表中列的值,并且这些值存储在一个数据结构中,索引是一种数据结构,一般是B-TREE 。 2. 知识剖析 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 创建索引时,你需要确保该索引是应用在SQL 查询语句的条件(一般作为 WHERE 子句的条件)。 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。 但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度。 因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 普通索引 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。 因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。 只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。 mysql > ALTER TABLE {table_name} ADD INDEX index_name ( {column} ) 唯一索引 它与前面的普通索引类似,不同的就是

MySQL-4- 索引及执行计划

梦想与她 提交于 2019-11-26 17:27:08
1. 索引作用 提供了类似于书中目录的作用,目的是为了优化查询 2. 索引的种类(算法) B树索引 Hash索引 R树 Full text GIS 3. B树 基于不同的查找算法分类介绍 B-tree B+Tree 在范围查询方面提供了更好的性能(> < >= <= like) B*Tree 4. 在功能上的分类 4.1 辅助索引(S)怎么构建B树结构的? (1). 索引是基于表中,列(索引键)的值生成的B树结构 (2). 首先提取此列所有的值,进行自动排序 (3). 将排好序的值,均匀的分布到索引树的叶子节点中(16K) (4). 然后生成此索引键值所对应得后端数据页的指针 (5). 生成枝节点和根节点,根据数据量级和索引键长度,生成合适的索引树高度 id name age gender select * from t1 where id=10; 问题: 基于索引键做where查询,对于id列是顺序IO,但是对于其他列的查询,可能是随机IO. 4.2 聚集索引(C) 4.2.1 前提 (1)表中设置了主键,主键列就会自动被作为聚集索引. (2)如果没有主键,会选择唯一键作为聚集索引. (3)聚集索引必须在建表时才有意义,一般是表的无关列(ID) 4.2.2 辅助索引(S)怎么构建B树结构的? (1) 在建表时,设置了主键列(ID) (2) 在将来录入数据时

数据库设计60个技巧

为君一笑 提交于 2019-11-26 12:47:01
数据库设计指南 如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋,大学学位课程里也有专门的讲述。不过,就如我们反复强调的那样,再好的老师也比不过经验的教诲。所以我们最近找了些对数据库设计颇有造诣的专业人士给大家传授一些设计数据库的技巧和经验。我们的编辑从收到的130 个反馈中精选了其中的60 个最佳技巧,并把这些技巧编写成了本文,为了方便索引其内容划分为5 个部分: 第1 部分— 设计数据库之前 这一部分罗列了12 个基本技巧,包括命名规范和明确业务需求等。 第2 部分— 设计数据库表 总共24 个指南性技巧,涵盖表内字段设计以及应该避免的常见问题等。 第3 部分— 选择键 怎么选择键呢?这里有10 个技巧专门涉及系统生成的主键的正确用法,还有何时以及如何索引字段以获得最佳性能等。 第 4 部分 — 保证数据完整性 讨论如何保持数据库的清晰和健壮,如何把有害数据降低到最小程度。 第5 部分— 各种小技巧 不包括在以上4 个部分中的其他技巧,五花八门,有 了它们希望你的数据库开发工作会更轻松一些。 第1 部分— 设计数据库之前 考察现有环境 在设计一个新数据库时,你不但应该仔细研究业务需求而且还要考察现有的系统。大多数数据库项目都不是从头开始建立的;通常,机构内总会存在用来满足特定需求的现有系统(可能没有实现自动计算)。显然

Activiti5.13数据库表结构设计

♀尐吖头ヾ 提交于 2019-11-26 03:54:32
1、结构设计 1.1、 逻辑结构设计 Activiti使用到的表都是ACT_开头的。 ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。 ACT_RU_*: ‘RU’表示runtime,运行时表-RuntimeService。这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据。Activiti只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。 ACT_ID_*: ’ID’表示identity (组织机构),IdentityService接口所操作的表。用户记录,流程中使用到的用户和组。这些表包含标识的信息,如用户,用户组,等等。 ACT_HI_*: ’HI’表示history,历史数据表,HistoryService。就是这些表包含着流程执行的历史相关数据,如结束的流程实例,变量,任务,等等 ACT_GE_*: 全局通用数据及设置(general),各种情况都使用的数据。 1.2、 所有表的含义 序号 表名 说明 1 act_ge_bytearray 二进制数据表 2 act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录, 3

阿里系统研发部数据库组教你一文搞懂 MySQL 单表查询的底层实现

旧巷老猫 提交于 2019-11-25 20:48:52
对于我们这些 MySQL的使用者来说,平时用的最多的就是查询功能。DBA时不时丢过来一些慢查询语句让优化,如果连查询是怎么执行的都不清楚还优化个毛线,所以是时候掌握真正的技术了。 MySQL有一个称为 查询优化器的模块,一条查询语句进行语法解析之后就会被交给查询优化器来进行优化,优化的结果就是生成一个所谓的 执行计划,这个执行计划表明了应该使用哪些索引进行查询,表之间的连接顺序是啥样的,最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询,并将查询结果返回给用户。不过查询优化这个主题有点儿大,在学会跑之前还得先学会走,所以本章先来瞅瞅 MySQL怎么执行单表查询(就是 FROM子句后边只有一个表,最简单的那种查询~)。 为了故事的发展,先得有个表: 我们为这个 single_table表建立了1个聚簇索引和4个二级索引,分别是: 为 id列建立的聚簇索引。 为 key1列建立的 idx_key1二级索引。 为 key2列建立的 idx_key2二级索引,而且该索引是唯一二级索引。 为 key3列建立的 idx_key3二级索引。 为 key_part1、 key_part2、 key_part3列建立的 idx_key_part二级索引,这也是一个联合索引。 然后我们需要为这个表插入10000行记录,除 id列外其余的列都插入随机值就好了,具体的插入语句我就不写了

阿里系统研发部数据库组教你一文搞懂 MySQL 单表查询的底层实现

那年仲夏 提交于 2019-11-25 20:48:46
对于我们这些 MySQL的使用者来说,平时用的最多的就是查询功能。DBA时不时丢过来一些慢查询语句让优化,如果连查询是怎么执行的都不清楚还优化个毛线,所以是时候掌握真正的技术了。 MySQL有一个称为 查询优化器的模块,一条查询语句进行语法解析之后就会被交给查询优化器来进行优化,优化的结果就是生成一个所谓的 执行计划,这个执行计划表明了应该使用哪些索引进行查询,表之间的连接顺序是啥样的,最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询,并将查询结果返回给用户。不过查询优化这个主题有点儿大,在学会跑之前还得先学会走,所以本章先来瞅瞅 MySQL怎么执行单表查询(就是 FROM子句后边只有一个表,最简单的那种查询~)。 为了故事的发展,先得有个表: 我们为这个 single_table表建立了1个聚簇索引和4个二级索引,分别是: 为 id列建立的聚簇索引。 为 key1列建立的 idx_key1二级索引。 为 key2列建立的 idx_key2二级索引,而且该索引是唯一二级索引。 为 key3列建立的 idx_key3二级索引。 为 key_part1、 key_part2、 key_part3列建立的 idx_key_part二级索引,这也是一个联合索引。 然后我们需要为这个表插入10000行记录,除 id列外其余的列都插入随机值就好了,具体的插入语句我就不写了