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)
此查询将能够使用计算列上的索引,并应快速查找相关行.
| 归档时间: |
|
| 查看次数: |
551 次 |
| 最近记录: |