SQL基本语法

在DBMS中,查询的过程可以概括为给提交查询请求,然后SQL语句将会自动生成查询计划并执行,在这个过程中,我们关心的到的结果是多少,而不关心结果是怎么得到的,因此一个高效的查询处理手段显得尤为重要。

查询处理简介

数据库索引

什么是索引

数据库索引是数据库中经过排序的数据结构,用于协助完成快速查询、更新等功能。索引一般由B树或B+树实现,关于B树与B+树的详细内容请参考。这里只说区别及优缺点。

B与B+树区别
  • B树每个节点都存储key和data,叶节点为null,不包含任何信息
  • B+树所有叶子节点包含数据,以及指向下一个节点的指针;而非叶子节点可以视为索引部分
B+树优点
  • 内部节点小,读写代价低
  • 查询效率更加稳定

索引特点

  • 索引由数据库管理系统自动维护并决定何时使用
  • 索引不需要用户在查询语句中指定
  • 定义主键或单一约束后会自动在相应列创建索引
  • 用户可以按照自己的需求对制定单个字段或多个字段添加索引

索引优缺点

优点
  • 加速检索
  • 索引可以使查询过程使用优化隐藏器,提高系统性能
缺点
  • 降低增删改速度
  • 占用资源

聚集索引与非聚集索引

聚集索引表记录的排列顺序和索引的排列顺序一致,所以查询效率快;非聚集索引指定了表中记录的逻辑顺序,但是记录的物理和索引不一定一致。两者的根本区别是表记录的排列顺序和与索引的排列顺序是否一致。

何时要/不要创建索引

需要创建索引 不需要创建索引
表经常性进行SELECT操作 表经常性进行添加/删除或更新操作
表很大 表很小
列名经常出现在WHERE或JOIN条件中 列名不常出现在WHERE或JOIN条件中

查询预编译

查询预编译的过程包括两部分:语法分析与语义检查,从而生成一个合法的语法分析树。

参考文献

0%