BTree

PostgreSQL环境下,触发器、索引和角色的创建

早过忘川 提交于 2019-11-26 20:00:59
创建表触发器的SQL语句 CREATE TRIGGER example_trigger BEFORE INSERT ON teaches FOR EACH ROW EXECUTE PROCEDURE example_function(); 实例 : 首先创建测试表、视图 CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL ); CREATE TABLE AUDIT_HIS( EMP_ID INT NOT NULL, EMP_NAME TEXT NOT NULL, ENTRY_DATE TEXT NOT NULL ); CREATE TABLE AUDIT( EMP_ID INT NOT NULL, EMP_NAME TEXT NOT NULL, ENTRY_DATE TEXT NOT NULL ); CREATE OR REPLACE VIEW "public"."company_view" AS SELECT company.id,company.name,company.age 2.创建触发器函数 CREATE OR REPLACE FUNCTION auditlogfunc() RETURNS

【BATJ】面试必问MySQL索引实现原理

霸气de小男生 提交于 2019-11-26 12:07:42
BATJ面试题剖析 1、 为什么需要使用索引? 2、 数据结构 Hash 、平衡二叉树、 B 树、 B+ 树 区别? 3、 机械 硬盘、固态硬盘区别? 4、 M yisam与 I nnodb B+ 树的区别? 5、 MySQL 中的索引什么数据结构? 6、M ySQL 数据库优化方案? 1.为什么需要使用索引? MySQL官方对索引的定义为:索引(Index)是帮助 MySQL 高效 获取数据的数据结构。 也就是说:索引就像书的目录一样可以非常快速的定位到书的页码。 如果向 mysql 发出一条 sql 语句请求,查询的字段没有创建索引的话,可能会导致全表扫描,这样查询效率非常低 2.1 数据结构 Hash 算法 哈希表(Hash table,也叫散列表),是根据关 键码值(Key value) 而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做 散列函数 ,存放记录的数组叫做 散列表 。 优点 : 通过字段的值计算的hash值,定位数据非常快, 查找可以直接根据 key 访问。 缺点 : 因为底层数据结构是散列的,无法进行比较大小, 不能进行范围查找 index=Hash(key) 2.2数据结构 平衡二叉树算法 平衡二叉查找树,又称 AVL树。 它除了具备二叉查找树的基本特征之外,还具有一个非常重要的特点:它

mysql的索引数据结构

天涯浪子 提交于 2019-11-25 21:24:46
二叉搜索树 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树 二叉平衡树 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树. 由于普通的二叉查找树会容易失去”平衡“,极端情况下,二叉查找树会退化成线性的链表,导致插入和查找的复杂度下降到 O(n) ,所以,这也是平衡二叉树设计的初衷。 二叉树,它的搜索时间复杂度为 O(log2N) ,所以它的搜索效率和树的深度有关,如果要提高查询速度,那么就要降低树的深度。 要降低树的深度,很自然的方法就是采用多叉树,再结合平衡二叉树的思想,我们可以构建一个平衡多叉树结构,然后就可以在上面构建平衡多路查找算法,提高大数据量下的搜索效率。 B-树 定义: 1. 有一个根节点,根节点只有一个记录和两个孩子或者根节点为空; 2. 每个节点记录中的key和指针相互间隔,指针指向孩子节点; 3. d是表示树的宽度,除叶子节点之外,其它每个节点有[d/2,d-1]条记录,并且些记录中的key都是从左到右按大小排列的,有[d/2+1,d]个孩子; 4. 在一个节点中,第n个子树中的所有key,小于这个节点中第n个key,大于第n-1个key