Dank hilfreicher Kommentare, insbesondere von @roganjosh, scheint das Problem darin zu bestehen, dass der standardmäßige MySQL-Connector in Python und nicht in C geschrieben ist, was ihn sehr langsam macht. Die Lösung ist die Verwendung von MySQLdb
, bei dem es sich um einen nativen C-Connector handelt.
In meinem speziellen Setup, bei dem Python 3 mit Anaconda ausgeführt wurde, war das nicht möglich, weil MySQLdb
wird nur in Python 2 unterstützt. Es gibt jedoch eine Implementierung von MySQLdb
für Python 3 unter dem Namen mysqlclient
.
Mit dieser Implementierung ist die Zeit zum Lesen der gesamten Tabelle jetzt auf etwa 5 Minuten gesunken, nicht so schnell wie R, aber viel weniger als die 40 oder so, die vorher benötigt wurden.
Ich bin immer noch offen für Vorschläge, die es schneller machen würden, aber ich vermute, dass dies so gut ist, wie es nur geht.