Dzięki pomocnym komentarzom, szczególnie od @roganjosh, wydaje się, że problem polega na tym, że domyślny łącznik mysql jest napisany w Pythonie, a nie w C, co czyni go bardzo wolnym. Rozwiązaniem jest użycie MySQLdb
, który jest natywnym złączem C.
W mojej konkretnej konfiguracji, uruchamiając Pythona 3 z anakondą, nie było to możliwe, ponieważ MySQLdb
jest obsługiwany tylko w Pythonie 2. Jednak istnieje implementacja MySQLdb
dla Pythona 3 pod nazwą mysqlclient
.
Korzystając z tej implementacji, czas jest teraz skrócony do około 5 minut na przeczytanie całej tabeli, nie tak szybko jak R, ale znacznie mniej niż 40 lub więcej, które zajmowało wcześniej.
Nadal jestem otwarty na sugestie, które przyspieszyłyby proces, ale przypuszczam, że jest to tak dobre, jak to możliwe.