Grâce aux commentaires utiles, en particulier de @roganjosh, il semble que le problème est que le connecteur mysql par défaut est écrit en python plutôt qu'en C, ce qui le rend très lent. La solution est d'utiliser MySQLdb
, qui est un connecteur C natif.
Dans ma configuration particulière, en exécutant python 3 avec anaconda, ce n'était pas possible car MySQLdb
est uniquement pris en charge en python 2. Cependant, il existe une implémentation de MySQLdb
pour python 3 sous le nom mysqlclient
.
En utilisant cette implémentation, le temps est maintenant tombé à environ 5 minutes pour lire l'ensemble du tableau, pas aussi vite que R, mais bien moins que les 40 minutes environ qu'il fallait auparavant.
Je suis toujours ouvert aux suggestions qui accéléreraient les choses, mais je suppose que c'est aussi bon que possible.