Oracle 中带和不带 KEEP 的 PARTITION BY
在 Oracle 中对数据进行分区时,有两个主要选项可用:PARTITION BY 和 KEEP。这两个选项都可以用于将数据分组为较小的子集,但它们对结果数据有不同的影响。
PARTITION BY
PARTITION BY 子句用于划分基于一个或多个列将表分成更小的分区。每个分区中的数据与其他分区中的数据分开存储。这可以提高某些类型查询的性能,例如按特定列值过滤数据的查询。
例如,以下查询使用 PARTITION BY 子句根据 deptno 将 empl 表划分为多个分区列:
SELECT empno, deptno, sal, MIN(sal) OVER (PARTITION BY deptno) AS "Lowest", MAX(sal) OVER (PARTITION BY deptno) AS "Highest" FROM empl;
此查询将返回每个部门的最低和最高工资。每个部门的数据将存储在单独的分区中,这将提高按部门过滤数据的查询的性能。
KEEP
KEEP 子句用于指定每个分区中保留哪些行。 KEEP 子句可以与 PARTITION BY 子句或 DISTINCT 子句一起使用。
与 PARTITION BY 子句一起使用时,KEEP 子句指定要保留每个分区的哪些行。例如,以下查询使用 KEEP 子句仅保留每个分区的第一行:
SELECT empno, deptno, sal, MIN(sal) OVER (PARTITION BY deptno) AS "Lowest", MAX(sal) OVER (PARTITION BY deptno) AS "Highest" FROM empl KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno);
此查询将返回每个部门的最低和最高工资,但只会返回第一行从每个分区。这对于需要返回有限行数的查询,或者需要以特定顺序返回数据的查询非常有用。
PARTITION BY 和 KEEP 之间的区别
PARTITION BY 和 KEEP 之间的主要区别在于 PARTITION BY 将数据划分为更小的分区,而 KEEP 指定要保留哪些行每个分区。 PARTITION BY 可用于提高某些类型查询的性能,而 KEEP 可用于限制查询返回的行数或按特定顺序返回数据。
以上是Oracle 数据分区中的'PARTITION BY”和'KEEP”子句有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!