Благодарение на полезни коментари, особено от @roganjosh, изглежда, че проблемът е, че конекторът по подразбиране mysql е написан на python, а не на C, което го прави много бавен. Решението е да използвате MySQLdb
, който е собствен конектор C.
В моята конкретна настройка, изпълнявайки python 3 с anaconda, това не беше възможно, защото MySQLdb
се поддържа само в python 2. Въпреки това, има реализация на MySQLdb
за python 3 под името mysqlclient
.
Използвайки тази реализация, времето вече е намаляло до около 5 минути за четене на цялата таблица, не толкова бързо, колкото R, но много по-малко от 40-те или така, които отнемаха преди.
Все още съм отворен за предложения, които биха го ускорили, но предполагам, че това е толкова добро, колкото ще стане.