 Greenplum 排序算法● 分割:重新排序数组,所有比基准元素小的元素排放到基准元素之前;所有比基 准元素大的元素排放到基准元素之后。分割完成后,我们完成了对基准元素的 排序,即基准元素在数组中的位置不再改变 ● 递归排序子序列:递归地将小于基准元素的子序列和大于基准元素的子序列分 别进行排序 快速排序 8 ● 快速排序算法每次选取一个基准元素,将比基准元素小的排到基准元素左边, 比基准元素大的排到基准元素的右边,从而将待排序数组分成两个子集。 记录该元组的排序键为 lastkey。 ● 3. 读取新元组,如果元组排序键大于等于lastkey,插入堆顶,并调整堆,使其有 序。 ● 4. 如果新元组排序键小于lastkey,将该元组放入堆尾,并将堆的大小减1。 ● 5. 重复第2步,直至堆大小变为0。 ● 6. 顺串生成完毕。将堆大小重置为N,并重新建堆。重复第2步,开始生成下一 个顺串。 替换选择算法 25 ● 问题二:合并0 码力 | 52 页 | 2.05 MB | 1 年前3 Greenplum 排序算法● 分割:重新排序数组,所有比基准元素小的元素排放到基准元素之前;所有比基 准元素大的元素排放到基准元素之后。分割完成后,我们完成了对基准元素的 排序,即基准元素在数组中的位置不再改变 ● 递归排序子序列:递归地将小于基准元素的子序列和大于基准元素的子序列分 别进行排序 快速排序 8 ● 快速排序算法每次选取一个基准元素,将比基准元素小的排到基准元素左边, 比基准元素大的排到基准元素的右边,从而将待排序数组分成两个子集。 记录该元组的排序键为 lastkey。 ● 3. 读取新元组,如果元组排序键大于等于lastkey,插入堆顶,并调整堆,使其有 序。 ● 4. 如果新元组排序键小于lastkey,将该元组放入堆尾,并将堆的大小减1。 ● 5. 重复第2步,直至堆大小变为0。 ● 6. 顺串生成完毕。将堆大小重置为N,并重新建堆。重复第2步,开始生成下一 个顺串。 替换选择算法 25 ● 问题二:合并0 码力 | 52 页 | 2.05 MB | 1 年前3
 TiDB v8.4 中文手册@guo-shaoge – 修复禁用 lite-init-stats 可能导致统计信息同步加载失败的问题 #54532 @hawkingrei – 修复当 UPDATE 或 DELETE 语句包含递归的 CTE 时,语句可能报错或不生效的问题 #55666 @time-and-fate – 修复当一条 SQL 绑定涉及窗口函数时,有一定概率不生效的问题 #55981 @winoros – 修 99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 336 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH TiDB v8.4 中文手册@guo-shaoge – 修复禁用 lite-init-stats 可能导致统计信息同步加载失败的问题 #54532 @hawkingrei – 修复当 UPDATE 或 DELETE 语句包含递归的 CTE 时,语句可能报错或不生效的问题 #55666 @time-and-fate – 修复当一条 SQL 绑定涉及窗口函数时,有一定概率不生效的问题 #55981 @winoros – 修 99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 336 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH- AS ( - ) SELECT ... FROM - ; 例如,假设还想知道最年长的 50 位作家分别编写过多少书籍。 在 SQL 中,可以将临时表小节当中的例子改为以下 SQL 语句: WITH top_50_eldest_authors_cte 0 码力 | 5072 页 | 104.05 MB | 10 月前3
 TiDB v8.5 中文手册@guo-shaoge – 修复禁用 lite-init-stats 可能导致统计信息同步加载失败的问题 #54532 @hawkingrei – 修复当 UPDATE 或 DELETE 语句包含递归的 CTE 时,语句可能报错或不生效的问题 #55666 @time-and-fate – 修复当一条 SQL 绑定涉及窗口函数时,有一定概率不生效的问题 #55981 @winoros – 修 99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 340 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH TiDB v8.5 中文手册@guo-shaoge – 修复禁用 lite-init-stats 可能导致统计信息同步加载失败的问题 #54532 @hawkingrei – 修复当 UPDATE 或 DELETE 语句包含递归的 CTE 时,语句可能报错或不生效的问题 #55666 @time-and-fate – 修复当一条 SQL 绑定涉及窗口函数时,有一定概率不生效的问题 #55981 @winoros – 修 99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 340 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH- AS ( - ) SELECT ... FROM - ; 例如,假设还想知道最年长的 50 位作家分别编写过多少书籍。 在 SQL 中,可以将临时表小节当中的例子改为以下 SQL 语句: WITH top_50_eldest_authors_cte 0 码力 | 5095 页 | 104.54 MB | 10 月前3
 TiDB v8.2 中文手册无法共存的问题 #51362 @AilinKid – 修复执行谓词总是为 true 的 SHOW ERRORS 语句导致 TiDB panic 的问题 #46962 @elsa0520 – 修复在递归 CTE 中无法使用视图的问题 #49721 @hawkingrei – 修复 TiDB 启动加载统计信息时可能因为 GC 推进报错的问题 #53592 @you06 – 修复使用 PREPARE/EXECUTE 99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 319 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH TiDB v8.2 中文手册无法共存的问题 #51362 @AilinKid – 修复执行谓词总是为 true 的 SHOW ERRORS 语句导致 TiDB panic 的问题 #46962 @elsa0520 – 修复在递归 CTE 中无法使用视图的问题 #49721 @hawkingrei – 修复 TiDB 启动加载统计信息时可能因为 GC 推进报错的问题 #53592 @you06 – 修复使用 PREPARE/EXECUTE 99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 319 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH- AS ( - ) SELECT ... FROM - ; 例如,假设还想知道最年长的 50 位作家分别编写过多少书籍。 在 SQL 中,可以将临时表小节当中的例子改为以下 SQL 语句: WITH top_50_eldest_authors_cte 0 码力 | 4987 页 | 102.91 MB | 10 月前3
 TiDB v8.0 中文手册99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 330 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH TiDB v8.0 中文手册99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 330 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH- AS ( - ) SELECT ... FROM - ; 例如,假设还想知道最年长的 50 位作家分别编写过多少书籍。 在 SQL 中,可以将临时表小节当中的例子改为以下 SQL 语句: WITH top_50_eldest_authors_cte 子查询拓展到外部查询, 以此提高执行效率。 333 4.7.7.1.2 递归的 CTE 递归的公共表表达式可以使用如下语法进行定义: WITH RECURSIVE - AS ( - ) SELECT ... FROM - ; 比较经典的例子是通过递归的 CTE 生成一组斐波那契数: WITH RECURSIVE fibonacci 0 码力 | 4805 页 | 101.28 MB | 1 年前3
 TiDB v8.1 中文手册99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 315 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH TiDB v8.1 中文手册99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 315 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH- AS ( - ) SELECT ... FROM - ; 例如,假设还想知道最年长的 50 位作家分别编写过多少书籍。 在 SQL 中,可以将临时表小节当中的例子改为以下 SQL 语句: WITH top_50_eldest_authors_cte 子查询拓展到外部查询, 以此提高执行效率。 318 4.7.7.1.2 递归的 CTE 递归的公共表表达式可以使用如下语法进行定义: WITH RECURSIVE - AS ( - ) SELECT ... FROM - ; 比较经典的例子是通过递归的 CTE 生成一组斐波那契数: WITH RECURSIVE fibonacci 0 码力 | 4807 页 | 101.31 MB | 1 年前3
 TiDB v7.6 中文手册在使用企业插件审计日志时可能占用大量资源的问题 #49273 @lcwangchao – 修复特定情况下优化器将 TiFlash 选择路径错误转化为 DUAL Table 的问题 #49285 @AilinKid – 修复包含递归 (WITH RECURSIVE) CTE 的 UPDATE 或 DELETE 语句可能会产生错误结果的问题 #48969 @winoros – 修复包含 IndexHashJoin 算子的查询由于内存超过 99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 326 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过 WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH TiDB v7.6 中文手册在使用企业插件审计日志时可能占用大量资源的问题 #49273 @lcwangchao – 修复特定情况下优化器将 TiFlash 选择路径错误转化为 DUAL Table 的问题 #49285 @AilinKid – 修复包含递归 (WITH RECURSIVE) CTE 的 UPDATE 或 DELETE 语句可能会产生错误结果的问题 #48969 @winoros – 修复包含 IndexHashJoin 算子的查询由于内存超过 99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 326 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过 WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH- AS ( - ) SELECT ... FROM - ; 例如,假设还想知道最年长的 50 位作家分别编写过多少书籍。 在 SQL 中,可以将临时表小节当中的例子改为以下 SQL 语句: WITH top_50_eldest_authors_cte 0 码力 | 4666 页 | 101.24 MB | 1 年前3
 TiDB v7.5 中文手册修复当被缓存的执行计划包含日期类型和 unix_timestamp 的比较时,结果出现错误的问题 #48165 @qw4990 – 修复默认内联且带聚合函数或窗口函数的公共表表达式 (CTE) 被递归的 CTE 引用时会报错的问题 #47881 @elsa0520 – 修复优化器为减少窗口函数引入的 sort 而错误地选择了 IndexFullScan 的问题 #46177 @qw4990 99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 316 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过 WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH TiDB v7.5 中文手册修复当被缓存的执行计划包含日期类型和 unix_timestamp 的比较时,结果出现错误的问题 #48165 @qw4990 – 修复默认内联且带聚合函数或窗口函数的公共表表达式 (CTE) 被递归的 CTE 引用时会报错的问题 #47881 @elsa0520 – 修复优化器为减少窗口函数引入的 sort 而错误地选择了 IndexFullScan 的问题 #46177 @qw4990 99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 316 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过 WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH- AS ( - ) SELECT ... FROM - ; 例如,假设还想知道最年长的 50 位作家分别编写过多少书籍。 在 SQL 中,可以将临时表小节当中的例子改为以下 SQL 语句: WITH top_50_eldest_authors_cte 0 码力 | 4590 页 | 100.91 MB | 1 年前3
 TiDB v7.1 中文手册99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 330 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过 WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH TiDB v7.1 中文手册99 标准的 CTE 及其递归的写法,极大提升开发人员和 DBA 编写复杂业务逻辑 SQL 的效率,增强代码的可维护性。 330 4.7.7.1 基本使用 公共表表达式 (CTE) 是一个临时的中间结果集,能够在 SQL 语句中引用多次,提高 SQL 语句的可读性与执行效 率。在 TiDB 中可以通过 WITH 语句使用公共表表达式。 公共表表达式可以分为非递归和递归两种类型。 4.7.7 7.1.1 非递归的 CTE 非递归的 CTE 使用如下语法进行定义: WITH- AS ( - ) SELECT ... FROM - ; 例如,假设还想知道最年长的 50 位作家分别编写过多少书籍。 在 SQL 中,可以将临时表小节当中的例子改为以下 SQL 语句: WITH top_50_eldest_authors_cte 子查询拓展到外部查询, 以此提高执行效率。 333 4.7.7.1.2 递归的 CTE 递归的公共表表达式可以使用如下语法进行定义: WITH RECURSIVE - AS ( - ) SELECT ... FROM - ; 比较经典的例子是通过递归的 CTE 生成一组斐波那契数: WITH RECURSIVE fibonacci 0 码力 | 4369 页 | 98.92 MB | 1 年前3
 Greenplum Database 管理员指南 6.2.1TABLE命令提供了改变分布策略的选项。在修改TABLE的分布策略时,表 中的数据要在磁盘上做重分布,该操作可能需要密集的资源消耗。还有一个按照现有策 略重新分布数据的选项。对于分区表来说,修改分布策略会递归的应用于所有的子分区。 该操作不会改变表的OWNER以及其他TABLE属性。例如,下面的SQL是修改sales表的 DK为customer_id并重分布数据: =# ALTER TABLE sales 18616691889) 编写:陈淼 - 219 - 句,则可以把 SQL 的逻辑结构简化很多。 启用了 RECURSIVE 关键字之后,WITH 子句就可以完成普通 SQL 无法完成的递归 查询,这时,WITH 子句中的查询可以引用 WITH 子句自己的输出。下面的这个例子, 是计算从 1 到 100 的整数求和: =# WITH RECURSIVE t(n) AS ( t; 递归 WITH 子句,一般由一个非递归项,后面 UNON 或者 UNION ALL 一个递归项 组成,只有递归项才包含 WITH 子句本身的引用。 non_recursive_term UNION [ ALL ] recursive_term 包含 UNION 或者 UNION ALL 的递归 WITH 查询按照如下方式执行: 1、 计算非递归项。对于 UNION(但不是0 码力 | 416 页 | 6.08 MB | 1 年前3 Greenplum Database 管理员指南 6.2.1TABLE命令提供了改变分布策略的选项。在修改TABLE的分布策略时,表 中的数据要在磁盘上做重分布,该操作可能需要密集的资源消耗。还有一个按照现有策 略重新分布数据的选项。对于分区表来说,修改分布策略会递归的应用于所有的子分区。 该操作不会改变表的OWNER以及其他TABLE属性。例如,下面的SQL是修改sales表的 DK为customer_id并重分布数据: =# ALTER TABLE sales 18616691889) 编写:陈淼 - 219 - 句,则可以把 SQL 的逻辑结构简化很多。 启用了 RECURSIVE 关键字之后,WITH 子句就可以完成普通 SQL 无法完成的递归 查询,这时,WITH 子句中的查询可以引用 WITH 子句自己的输出。下面的这个例子, 是计算从 1 到 100 的整数求和: =# WITH RECURSIVE t(n) AS ( t; 递归 WITH 子句,一般由一个非递归项,后面 UNON 或者 UNION ALL 一个递归项 组成,只有递归项才包含 WITH 子句本身的引用。 non_recursive_term UNION [ ALL ] recursive_term 包含 UNION 或者 UNION ALL 的递归 WITH 查询按照如下方式执行: 1、 计算非递归项。对于 UNION(但不是0 码力 | 416 页 | 6.08 MB | 1 年前3
共 35 条
- 1
- 2
- 3
- 4













