Dankzij behulpzame opmerkingen, met name van @roganjosh, lijkt het erop dat het probleem is dat de standaard mysql-connector is geschreven in python in plaats van in C, waardoor het erg traag is. De oplossing is om MySQLdb
te gebruiken , wat een native C-connector is.
In mijn specifieke setup, met Python 3 met anaconda, was dat niet mogelijk omdat MySQLdb
wordt alleen ondersteund in python 2. Er is echter een implementatie van MySQLdb
voor python 3 onder de naam mysqlclient
.
Met deze implementatie is de tijd nu teruggebracht tot ongeveer 5 minuten om de hele tabel te lezen, niet zo snel als R, maar veel minder dan de ongeveer 40 minuten die daarvoor nodig waren.
Ik sta nog steeds open voor suggesties die het sneller zouden maken, maar ik denk dat dit zo goed is als het maar kan worden.