MonetDB查询计划解释中的语句是什么意思?

时间:2016-04-01 21:12:38

标签: monetdb columnstore monetdb-assembly-language

我正在尝试了解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?

谢谢!

1 个答案:

答案 0 :(得分:1)

了解explain SQL语句的输出需要了解MonetDB Assembly-like Language (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用于不同的可能性。