我正在尝试了解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?
谢谢!
答案 0 :(得分:1)
了解explain SQL语句的输出需要了解MonetDB Assembly-like Language (MAL)。
关于函数sql.projectdelta,sql.subdelta和algebra.subsort,您将在monetdb lib文件夹中找到它们的签名和(简要)描述。例如:
关于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用于不同的可能性。