数据库推荐

Bre*_*ett 3 sql database sql-server monetdb mongodb

我有一组数据,如下所示:

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)
Run Code Online (Sandbox Code Playgroud)

所以我有一个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服务器?我也对列存储数据库感到好奇,例如MonetDB.或者也许是文档存储数据库,例如MongoDB.有没有人有什么建议?

非常感谢,布雷特

Mar*_*ers 10

您可以继续使用SQL Server并使用持久计算列来计算所有值的总和并对其进行索引.

ALTER TABLE tablename ADD SumOfAllColumns AS (c1 + c2 + ... + c50) PERSISTED
Run Code Online (Sandbox Code Playgroud)

然后,您可以将查询重新排列为:

SELECT name FROM tablename WHERE SumOfAllColumns < a1+a2+a3+...+a50 - 1
Run Code Online (Sandbox Code Playgroud)

此查询将能够使用计算列上的索引,并应快速查找相关行.