chapter05_查询处理和查询优化_1_关系数据库系统的查询处理过程与算法

  • 查询处理的过程

    (1) 查询分析

    检查语法错误

    (2) 查询检查

    语义检查、用户权限检查、完整性约束检查

    (3) 建立查询的内部表示

    生成语法树

    (4) 查询优化

    代数优化:关系代数表达式的等价变换

    物理优化:结合索引、数据值的分布特征改善查询

    代价估算:评估若干查询计划的效率

    (5) 查询执行

    分为 解释编译两种

    解释执行:对于每一条查询语句,DBMS都不保留可执行代码,每次都重新解释执行查询语句;

    编译执行:运行前先编译,生成可执行代码

  • 执行选择操作的算法 SELECT XXX FROM XX <条件>;

    (1) 顺序扫描:按照元组的物理顺序逐个扫描

    适用于元组少,被选中的元组比例高的情况

    (2) 二分查找:如果物理文件有序,则用二分查找算法

    (3) 索引(或散列): 如果选择条件涉及的列上有索引,则通过索引查找满足条件的元组指针,然后通过该指针继续检索满足查询条件的元组

  • 执行复合选择操作的算法: 由合取(AND), 析取(OR)连接而成的复合选择条件

    (1) 合取AND

    组合索引

    适用于合取的几个列恰好组成了组合索引

    单独索引

    如果某一个属性上具有索引,则通过索引找到复合与该属性有关的查询条件的元组指针,通过元组指针得到符合该条件的元组,并对得到的元组检查其余的查询条件是否满足

    多个索引

    如果合取条件涉及的属性都存在索引,那么可以分别检索满足单个条件的元组指针集再求交集;如果只有部分属性存在索引,那么求交集后还要进行验证是否满足其他条件

    选择性:满足条件的记录数占记录总数的比例。最大为1,最小为0. 在DBMS数据字典中常常会记录选择性的估计值,这一值越小,越有必要有限使用这个条件来检索元组.

    (2) 析取OR

    只要任意一个条件没有索引,就只能用顺序扫描的方式

  • 连接操作的算法

    (1) 嵌套循环法

    把一个关系作为外循环,另一个关系作为内循环。顺序扫描外循环中的每一条记录,对于每一条记录,检索内循环的每条元组是否满足连接条件。

    一般地,使用记录较少的关系作为外循环。

    (2) 索引嵌套循环法

    嵌套循环法中,如果两个连接属性的一个属性存在索引或散列,则使用索引扫描代替顺序扫描

    (3) 排序合并法

    适用于自然连接和等值连接。如果两个关系按照连接属性,元组按照排序连续存放,那么可以同时对两个关系进行扫描,连接等值的元组。

    排序合并法只需要分别对两个关系扫描一次。

    (4) 散列连接法

    思路:以连接属性作为散列键,先对两个关系的连接属性分别使用同一个散列函数划分为几个hash桶,再进行桶内部的匹配检测。

    过程

    1° 划分阶段: 将记录数少的关系R的用于连接的属性值进行散列,将各个元组划分为不同的hash桶

    2° 试探阶段: 将另一个关系S的用于连接的属性值进行散列,然后与已经在桶中的R的元组进行匹配。

    散列连接法只需要分别对两个关系扫描一次。

    散列连接法的前提是较小的表可以在划分阶段完全放入内存中

  • 投影操作的算法

    (1) 如果要投影的列中包含了主键,则可以直接操作;

    (2) 如果要投影的列中不包含主键,但是没有加DISTINCT,则也可以直接操作;

    (3) 如果要投影的列中不包含主键,且加了DISTINCT,那么可以先对结果进行排序;或用散列法消除重复元组(检查每条记录是否与桶中的记录重复),消除重复元组

  • 集合运算的算法

    (1) 并、差、交

    分别对两个关系按照主键属性进行排序,然后分别对两个关系进行一次扫描

    (2) 笛卡尔积

    嵌套循环法

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容