加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹰潭站长网 (https://www.0701zz.cn/)- 图像处理、低代码、云通信、数据工具、物联设备!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

学会这几个函数的使用必不可少

发布时间:2021-02-15 12:41:48 所属栏目:外闻 来源:互联网
导读:那么我准备对一些常见的硬件缩写进行一些直白的介绍,让大家了解这些专业名词的同时,以避免进入商家的宣传陷阱。今天我们就从最困扰我侄子的硬盘入手吧。 PS:文章主要面对小白读者,会有一些不太恰当的举例,请大家多多包涵。 现在打开笔记本电脑的电商详

那么我准备对一些常见的硬件缩写进行一些“直白”的介绍,让大家了解这些专业名词的同时,以避免进入商家的宣传陷阱。今天我们就从最困扰我侄子的硬盘入手吧。

PS:文章主要面对小白读者,会有一些不太恰当的举例,请大家多多包涵。

现在打开笔记本电脑的电商详情页不难看到,什么M.2、PCIe、游戏级NVMe等这些名词本来就看的人头大,更过分的是这些名词会可能出现各种排列……例如:M.2 PCIe游戏级硬盘加持。那么这些名词都代表什么?对于我们实际使用又有什么影响呢?

我们先来看看这些名词分别代表什么意义

 

  • 去除无用的操作符:如果你用了DISTINCT,但你已经有一个UNIQUE约束以保证数据唯一,那DISTINCT关键字就会被删除。
  • 消除多余的连接:如果你有两次相同的连接条件,因为一个连接条件被隐藏在视图中,或者由于传递性而导致无用的连接,则将其删除。
  • 持续的算术评估:如果查询是需要计算的内容,那么在重写过程中将对其进行一次计算。比如,把WHERE AGE> 10 + 2转换为WHERE AGE> 12,然后将TODATE(“ 日期”)转换为datetime格式的日期
  • (高级)分区修正:如果你使用了分区表,重写器可以找到要使用的分区。
  • (高级)实例化视图重写:如果已经有了和查询子集匹配的实例化视图,重写器会检查该视图是否是最新视图,并修改查询使用实例化视图而不是原始表。
  • (高级)自定义规则:如果你创建了重写查询的自定义规则,那重写器会执行这些规则(高级)Olap转换:分析/窗口函数,星型连接,汇总…也都会进行转换(但是具体是由重写器还是优化器完成的取决于数据库,因为这两个过程邻近)。

这个重写后的查询会发送给查询优化器,有趣的来了。

统计

在进入数据库如何优化查询之前,我们需要先谈谈统计信息,因为没有统计信息,数据库就会很傻。如果你不告诉数据库分析自己的数据,它不会这样做,而且会做出错误的假设。

那数据库需要什么信息呢?

我们大概说一下论数据库和操作系统如何存储数据的。他们使用的最小单位称为页或块(默认为4或8 KB)。也就是说,如果你只需要1 KB,也会占一页。如果页面占用8 KB,那就会浪费7 KB。

回到统计来,当你要求数据库获取统计信息时,它会计算这些内容:

  • 一个表中的行或页的数量
  • 一个表里的每一列
    • 单独的数据内容
    • 数据的长度(最小,最大,平均)
    • 数据区间信息(最小、最大、平均)
  • 表的索引信息

这些统计信息会帮助优化器更好的预估查询中磁盘I/O,CPU以及内存的使用。

每一列的统计信息都很重要。比如一个 PERSON 表,需要在 LAST_NAME, FIRST_NAME两列做连接,通过统计,数据库能知道FIRST_NAME这一列共多少个不同的值,LAST_NAME有多少个不同的值。所以数据库会使用LAST_NAME,FIRST_NAME来连接,而不是FIRST_NAME,LAST_NAME,因为LAST_NAME不太可能相同,会少产生数据。大多数情况下,数据库的前两三个字符比较 LAST_NAME就足够了。

当然这些是基本的统计信息,你也可以让数据库计算 histograms 这种更高阶的统计数据。最常使用的值,质量等等,通过这些附加信息,可以帮助数据库找到更高效的查询计划,特别是像等值查询,以及范围查询这种。因为数据库已经知道这种情况下有多少条记录。

这些统计信息记录在数据库的元数据中。因此也是需要花时间不断更新的。这也是为啥在大多数数据库里他都不自动更新。

后面的文章,会描述查询优化器的一些细节。


(编辑:鹰潭站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读