我使用的是最新版本的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查询中尝试了不同的变体 但它仍然不对。
有人可以帮助我获得正确的语法或指向任何有用的用户手册吗?
答案 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希望包含在PROCEDURE
或FUNCTION
中。今天学到了什么......
另一个重要注意事项:在MonetDB中,大量单INSERT
个命令的速度不是很快。建议将它们包装在事务中或使用批量加载。