我有一个包含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
已经给出了一些解决方案。我真的很感激。但是,我想知道我们是否有更有效的解决方案。
答案 0 :(得分:1)
您可以通过索引数据来大大加快SQL查询速度,尤其是对于大型表。
CREATE CLUSTERED INDEX index_name
ON [myDB].[dbo].[myTable] (value, cardID, locationID)
上面的命令为您的表创建聚簇索引。将实际列名放在圆括号内。聚簇索引按照圆括号中指定的顺序对行进行排序。您可以创建其他非聚集索引,但通常建议您的表上至少有一个聚簇索引。
如果您的数据中有唯一标识符(例如,每个观察的ID非常不同),则可以使用CREATE UNIQUE INDEX语句创建 UNIQUE INDEX 。这通常是加快查询速度的最佳方式。
一般来说,您应该再次按基数的降序索引数据;这意味着具有最多不同值的columnn首先出现在" ON表(...)"声明,后面是具有逐渐减少的不同值的列。