Gracias a los útiles comentarios, particularmente de @roganjosh, parece que el problema es que el conector mysql predeterminado está escrito en python en lugar de C, lo que lo hace muy lento. La solución es usar MySQLdb
, que es un conector C nativo.
En mi configuración particular, ejecutar python 3 con anaconda, eso no fue posible porque MySQLdb
solo se admite en python 2. Sin embargo, hay una implementación de MySQLdb
para python 3 bajo el nombre mysqlclient
.
Usando esta implementación, el tiempo ahora se ha reducido a unos 5 minutos para leer la tabla completa, no tan rápido como R, pero mucho menos que los 40 minutos que tomaba antes.
Todavía estoy abierto a sugerencias que lo harían más rápido, pero creo que esto es lo mejor que se puede conseguir.