SQL或R对大数据集的有效分析?

时间:2014-04-30 17:11:17

标签: sql sql-server r bigdata

我有一个包含8亿行和3列的数据文件。 csv文件大小为30 GB。

我需要对数据做一些分析。将它加载到SQL服务器花了很长时间。 此外,SQL查询花了大约10分钟,如:

 SELECT MAX(VALUE) AS max_s
 FROM [myDB].[dbo].[myTable]

另外,我需要为每列进行其他统计分析。

 SELECT COUNT(*) as num_rows, COUNT(DISTINCT VARIABLE1) as num_var1 FROM [myDB].[dbo].[myTable]

如果我想提高分析/查询效率,SQL服务器或其他工具可以帮助我吗?

R怎么样?但是,我的笔记本电脑只有8 GB内存。无法将整个数据加载到数据框中。

有关数据的更多信息,请点击此处 get statistics information by SQL query efficiently for table with 3 columns and 800 million rows

已经给出了一些解决方案。我真的很感激。但是,我想知道我们是否有更有效的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以通过索引数据来大大加快SQL查询速度,尤其是对于大型表。

CREATE CLUSTERED INDEX index_name
ON [myDB].[dbo].[myTable] (value, cardID, locationID)

上面的命令为您的表创建聚簇索引。将实际列名放在圆括号内。聚簇索引按照圆括号中指定的顺序对行进行排序。您可以创建其他非聚集索引,但通常建议您的表上至少有一个聚簇索引。

如果您的数据中有唯一标识符(例如,每个观察的ID非常不同),则可以使用CREATE UNIQUE INDEX语句创建 UNIQUE INDEX 。这通常是加快查询速度的最佳方式。

一般来说,您应该再次按基数的降序索引数据;这意味着具有最多不同值的columnn首先出现在" ON表(...)"声明,后面是具有逐渐减少的不同值的列。

Index syntax

Some more information on indexes