Carga lenta la tabla de SQL Server en pandas DataFrame

Pandas se vuelve ridículamente lento cuando carga más de 10 millones de registros de una base de datos de SQL Server usando pyodbc y principalmente la función pandas.read_sql (consulta, pyodbc_conn). El siguiente código tarda entre 40 y 45 minutos en cargar entre 10 y 15 millones de registros de la tabla SQL: Table1

¿Existe un método mejor y más rápido para leer la tabla SQL en el dataframe de pandas?

 import pyodbc import pandas server =  database =  username =  password =  port='1443' conn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';PORT='+port+';DATABASE='+database+';UID='+username+';PWD='+ password) cursor = conn.cursor() data = pandas.read_sql("select * from Table1", conn) #Takes about 40-45 minutes to complete 

Tuve el mismo problema con un número aún mayor de filas, ~ 50 M Terminé escribiendo una consulta SQL y las almacené como archivos .h5.

 sql_reader = pd.read_sql("select * from table_a", con, chunksize=10**5) hdf_fn = '/path/to/result.h5' hdf_key = 'my_huge_df' store = pd.HDFStore(hdf_fn) cols_to_index = [] for chunk in sql_reader: store.append(hdf_key, chunk, data_columns=cols_to_index, index=False) # index data columns in HDFStore store.create_table_index(hdf_key, columns=cols_to_index, optlevel=9, kind='full') store.close() 

De esta manera, podremos leerlos más rápido que un Pandas.read_csv