gpt4 book ai didi

mysql - 最快的子集方法 - data.table 与 MySQL

转载 作者:IT老高 更新时间:2023-10-28 23:51:01 25 4
gpt4 key购买 nike

我是 R 用户,我经常发现我需要编写需要对大型数据集(数百万行)进行子集化的函数。当我将这些函数应用于大量观察时,如果我不小心如何实现它,可能会非常耗时。

为此,我有时会使用 data.table 包,它提供的速度比使用数据帧的子集快得多。最近开始试验RMySQL之类的包,把一些表push到mysql,用这个包运行sql查询并返回结果。

我发现性能改进参差不齐。对于较小的数据集(数百万),似乎将数据加载到 data.table 并设置正确的键有助于更快的子集。对于较大的数据集(10 到 100 百万),向 mysql 发送查询似乎移动得更快。

想知道是否有人知道哪种技术应该更快地返回简单的子集或聚合查询,以及这是否应该取决于数据的大小?我知道在 data.table 中设置键有点类似于创建索引,但除此之外我没有更多的直觉。

最佳答案

如果数据适合 RAM,data.table 会更快。如果您提供一个示例,它可能很快就会变得很明显,您使用 data.table 很糟糕。您是否阅读过 data.table wiki 上的“注意事项”? ?

SQL 有一个下限,因为它是一个行存储。如果数据适合 RAM(并且 64 位相当多),那么 data.table 更快,不仅因为它在 RAM 中,还因为列在内存中是连续的(最小化从 RAM 到 L2 的页面获取以进行列操作)。正确使用 data.table 应该比 SQL 的下限要快。 FAQ 3.1 对此进行了解释。如果您发现使用 data.table 速度较慢,那么您使用 data.table 的可能性非常高(或者我们需要修复一个性能错误)。所以,请在阅读 data.table wiki 后发布一些测试。

关于mysql - 最快的子集方法 - data.table 与 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com