在MonetDB中查询语法

时间:2015-01-23 21:27:11

标签: monetdb

我使用的是最新版本的MonetDB for Windows,我已经在Windows 7上安装了它。

大家好,我最近开始研究MonetDB。最终目标是准备原型以演示MonetDB和SQL Server之间的查询性能差异。

我已经阅读了MonetDB SQL Reference文档,但我不清楚我应该如何准备WHILE查询。

创建表格查询:

sql>CREATE TABLE TestString ( Name VARCHAR(40) NULL );

声明并设置局部变量:

sql>delcare rowcount;
sql>set rowcount=1;

我试过查询:

sql>WHILE rowcount<1000000
sql>DO
sql>insert TestString Values CAST(uuid() as VARCHAR(50))
sql>set rowcount=rowcount+1
sql>END WHILE

我确实通过指定缩进在while查询中尝试了不同的变体 但它仍然不对。

有人可以帮助我获得正确的语法或指向任何有用的用户手册吗?

1 个答案:

答案 0 :(得分:2)

MonetDB支持大多数标准SQL-99。 WHILE是Microsoft的Transact-SQL的一部分,它不是标准的一部分,也不支持MonetDB。

按照以下方式工作:

CREATE TABLE TestString ( Name String NULL );

CREATE PROCEDURE InsertTestString (nrow int)
BEGIN
    DECLARE rowcount int;
    SET rowcount = 0;
    WHILE (rowcount < nrow) DO
        INSERT INTO TestString VALUES (uuid());
        SET rowcount = rowcount + 1;
    END WHILE;
END;

CALL InsertTestString(100);

显然,WHILE希望包含在PROCEDUREFUNCTION中。今天学到了什么......

另一个重要注意事项:在MonetDB中,大量单INSERT个命令的速度不是很快。建议将它们包装在事务中或使用批量加载。