如何编写更好的SQL查询:终极指南

  • 时间:
  • 浏览:1
  • 来源:大发彩神8下载最新版—大发快三官网大发彩神

《怎么还可否编写更好的SQL查询》教程的所有内容就介绍到这里,希望通过本教程的介绍,也能帮助这个人编写出更好、更优的SQL查询。

使用大O符号,可不须要根据输入的增长下行带宽 来表示运行时间,假如有一天输入可不须要任意大。大O符号不包括系数和低阶项,以便可不须要专注于查询运行时间的重要累积:增长率。使用这个法子时,会丢弃系数和低阶项,时间复杂度是逐渐描述出的,这是因为输入会变为无穷大。

在数据库语言中,复杂衡量了查询运行时间的长短。

通过哪些地方地方示例,可不须要都看查询的时间复杂度会根据运行的查询内容不同而有所不同。

怎么还可否编写更好的SQL查询:终极指南-第一累积

本次这个人学习《怎么还可否编写更好的SQL查询》系列的最后一篇文章。

已经 示例却说 在非索引列上使用WHERE子句进行查询:这就须要使用全表扫描或顺序扫描,这将是因为O(n)的时间复杂度。这是因为须要读取表中的每一行,以便找到正确ID的数据。即使第一行就查找到了正确的数据,查询还是会对每一行数据进行读取。

执行索引扫描(index Scan)或聚集索引扫描的查询计划时间复杂度,却说 对数时间。聚集索引是索引的叶级别暗含表的实际数据行的索引。聚集与这个索引非常之类于:它是在已经 或多个列上定义的。这也形成了索引主键。聚集主键是是聚集索引的主键列。聚集索引扫描是聚集索引中RDBMS从头到尾一行一行读取的基本操作。

假如有一天这么索引,这么这个查询的复杂度为O(n)i_id:

三种查询算法,不论输入的大小怎么还可否,都须要相同的时间来执行,这个法子却说 恒定时间查询。哪些地方地方类型的查询不要常见,下面是已经 例子:

一句SQL完成动态分级查询

通过前两篇文章,这个人假如有一天对查询计划有了一定了解。接下来,这个人还可不须要借助计算复杂度理论,来进一步深入地挖掘和思考性能的提升。理论计算机科学这个领域聚焦于:根据难度来对计算问題进行分类。哪些地方地方计算问題可不须却说 算法问題,也可不须却说 查询问題。

相关阅读:

最小复杂度为O(n log(n)),假如有一天基于连接属性的索引信息,最大复杂度会是O(n ^ 2)。

请注意,数据库的大小不仅随着表中存储数据的增加而增加,数据库中的索引也会影响数据库大小。

原文链接:https://www.datacamp.com/community/tutorials/sql-tutorial-query#importance

对于查询,这个人可不须要不按照难度进行分类,却说 按照运行查询并得到结果所需的时间来进行分类。这个法子也被称为按照时间复杂度进行分类。

以下的示例中存在已经 i_id的索引,这也是因为O(log(n))的复杂度:

假如有一天算法的执行时间与输入大小的平方成正比,则算法被称为对数时间算法。对于数据库,这是因为查询的执行时间与数据库大小的平方成正比。

下图是一张根据时间复杂度来估算查询性能的图表,通过图表可不须要查看每个算法的性能表现。

请记得:嵌套连接是将已经 表中的每个记录与已经 表中的每个记录进行比较的连接法子。

可不须要从以下方面衡量查询计划和时间复杂,并进一步调优SQL查询:

与线性执行时间密切相关的是,所有线性执行计划的时间总和。下面是这个例子:

【报表福利大放送】3000余套报表模板免费下载

假如有一天算法的执行时间与输入大小的对数成比,则算法被称为对数时间算法; 对于查询,这是因为执行时间与数据库大小的对数成正比。

这个算法的时间复杂度是已经 常数,假如有一天却说 从表中选折 任意一行。假如有一天,时间长度与表的大小无关。

转载请注明出自:冬枣 城控件

假如有一天已经 算法的时间执行与输入大小成正比,这么算法的执行时间会随着输入大小的增加而增加。对于数据库,这是因为查询执行时间与表大小成正比:随着表中数据行数的增加,查询时间也会相应增加。

对于不同的数据库,须要考虑不同的索引法子、不同的执行计划和不同的实现法子。

怎么还可否编写更好的SQL查询:终极指南-第二累积

执行计划定义了每个操作所使用的算法,这也使得每个查询的执行时间可不须要在逻辑上表示为查询计划中数据表大小的函数。换句话说,可不须要使用大O符号和执行计划来估算查询的复杂和性能。

假如有一天以下所列出的时间复杂度概念非常普遍。

假如有一天这么索引,则时间复杂度是O(n)。

具有二次时间复杂度的查询的示之类于下:

在下面的小结中,这个人假如有一天了解三种类型的时间复杂度概念。