1

我正在尝试了解 MonetDB 的查询计划。

是否有任何文档可以让我找到每条指令的用途?如果没有,谁能告诉我返回的是什么

sql.projectdelta(X_15,X_23,X_25,r1_30,X_27) 

 sql.subdelta(X_246,X_4,X_10,X_247,X_249), for example?

在我的查询中,我按两个属性(例如,按 A、B)对结果进行排序。你能告诉我为什么第二个排序比第一个有更多的参数吗?

(X_29,r1_36,r2_36) := algebra.subsort(X_28,false,false); 
(X_33,r1_40,r2_40) := algebra.subsort(X_22,r1_36,r2_36,false,false);             

algebra.subsort 是返回 (oid, columnType) 对还是仅返回 oid?

谢谢!!

4

1 回答 1

1

了解解释 SQL 语句的输出需要了解 MonetDB 类汇编语言 (MAL)

关于函数 sql.projectdelta、sql.subdelta 和 algebra.subsort,您可以在 monetdb lib 文件夹中找到它们的签名和(简要)描述。前任 :

  • [MonetDB_install_folder]\MonetDB5\lib\monetdb5\sql.mal 用于所有 sql 函数
  • [MonetDB_install_folder]\MonetDB5\lib\monetdb5\algebra.mal 用于所有代数函数

关于 algebra.subsort 不同数量的参数:

  • (X_29,r1_36,r2_36) := algebra.subsort(X_28,false,false); 被描述为:

    返回按尾值排序的 BAT 副本、指定输入如何重新排序的 BAT 以及包含组信息的 BAT。输入和输出(必须)是密集的。如果设置了反向位,则顺序为降序。如果设置了稳定位,则这是一种稳定的排序。

  • (X_33,r1_40,r2_40) := algebra.subsort(X_22,r1_36,r2_36,false,false); 被描述为:

    返回按尾值排序的 BAT 副本、指定输入如何重新排序的 BAT 以及包含组信息的 BAT。输入和输出(必须)是密集的。如果设置了反向位,则顺序为降序。如果设置了稳定位,则这是一种稳定的排序。

MAL 函数可以根据其返回值进行重载。algebra.subsort 可以根据您的要求返回 1、2 或 3 个值。Checl algebra.mal 用于不同的可能性。

于 2016-04-04T11:03:48.420 回答