【发布时间】:2011-06-01 05:45:27
【问题描述】:
我有一组数据,如下所示:
id name c1 c2 c3 c4 ... c50
-----------------------------------------------
1 string1 0.1 0.32 0.54 -1.2 ... 2.3
2 string2 0.12 0.12 -0.34 2.45 ... 1.3
...
(millions of records)
所以我有一个 id 列,一个字符串列,然后是 50 个浮点列。
在此数据上运行的查询类型只有一种,在传统 SQL SELECT 语句中如下所示:
SELECT name FROM table WHERE ((a1-c1)+(a2-c2)+(a3-c3)+...+(a50-c50)) > 1; 其中a1,a2,a3,etc 是在发送查询之前生成的值(不包含在数据表中)。
我的问题是这样的:有人对哪种类型的数据库可以最快地处理此类查询有任何建议吗?我使用过SQL server(这很慢),所以我正在寻找其他意见。
有没有办法针对这种类型的查询优化 SQL Server?我也一直对MonetDB之类的列存储数据库很好奇。或者可能是一个文档存储数据库,例如MongoDB。有人有什么建议吗?
非常感谢, 布雷特
【问题讨论】:
-
这些 a 列从何而来?
-
@Mark,谢谢,我只是忘记了平等。我纠正了这个问题;)
-
@sjngm, 'a' 数据是在发送 SELECT 语句之前在客户端生成的。因此,出于所有实际目的,它们都是常量。
-
@Brett:我真的希望你的意思不是平等。幸运的是,看看您的更新,您似乎没有。
-
@Mark,好的,好点。我没有那样想。 'a' 值是在客户端生成的,并且对于每个查询都是不同的。
标签: sql sql-server mongodb monetdb database