Tack vare användbara kommentarer, särskilt från @roganjosh, verkar det som att problemet är att standardmysql-anslutningen är skriven i python snarare än C, vilket gör den väldigt långsam. Lösningen är att använda MySQLdb
, som är en inbyggd C-kontakt.
I min speciella installation, att köra python 3 med anaconda, var det inte möjligt eftersom MySQLdb
stöds endast i python 2. Det finns dock en implementering av MySQLdb
för python 3 under namnet mysqlclient
.
Med den här implementeringen är tiden nere på cirka 5 minuter för att läsa hela tabellen, inte lika snabbt som R, men mycket mindre än de 40 eller så det tog innan.
Jag är fortfarande öppen för förslag som skulle göra det snabbare, men min gissning är att det här är så bra som det kommer att bli.