Soy un usuario R, y con frecuencia me parece que necesito escribir funciones que requieren subconjunto de grandes conjuntos de datos (10 de millones de filas). Cuando aplico tales funciones en un gran número de observaciones, puede tomar mucho tiempo si no tengo cuidado con la forma en que lo implemento.La manera más rápida de subconjunto - data.table contra MySQL
Para hacer esto, algunas veces he usado el paquete data.table, y esto proporciona velocidades mucho más rápidas que el subconjunto usando marcos de datos. Recientemente, comencé a experimentar con paquetes como RMySQL, empujé algunas tablas a mysql y usé el paquete para ejecutar consultas SQL y devolver resultados.
He encontrado mejoras en el rendimiento mixto. Para conjuntos de datos más pequeños (millones), parece que cargar los datos en una tabla de datos y configurar las claves correctas hace que los subconjuntos sean más rápidos. Para conjuntos de datos más grandes (10 a 100 s de millones), parece que el envío de una consulta a mysql se mueve más rápido.
¿Se preguntaba si alguien tiene alguna idea de qué técnica debería devolver consultas de agregación o agregación simples más rápido, y si esto debería depender del tamaño de los datos? Entiendo que establecer claves en data.table es algo similar a crear un índice, pero no tengo mucha más intuición más allá de eso.
Sé que algunas otras personas aquí tienen más experiencia con esto, así que les dejaré exponerlo con las respuestas reales, pero sospecho que querrás mirar el paquete 'sqldf' que hace exactamente lo que eres describiendo, solo crea la tabla en la memoria (creo) para que las consultas puedan correr un poco más rápido. – joran
gracias, joran! Tengo ganas de entender esto en el contexto de tablas grandes. Todo es especulación, pero he recibido consejos de que los problemas de velocidad que tengo podrían deberse a limitaciones/administración de la memoria. Después de todo, cuando se usan datos.mesa, ¿no son esas tablas en la memoria también? – exl
De hecho, para los datos que la memoria grande será un problema, pero creo que sqldf también puede usar discos db. De nuevo, no lo he usado mucho, lo mencioné porque es un paquete completo basado en el concepto de enviar datos a una base de datos, realizar SQL y luego devolverlo a R. – joran