PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Dlaczego psycopg2 INSERT tak długo działa w pętli i jak mogę to przyspieszyć?

Istnieje wiele opcji przyspieszających wstawianie danych zbiorczych.

1.) commit() po zakończeniu pętli:

for ele in coordinates:
    cursor.execute('INSERT INTO gmaps (source_latitude, source_longitude, destination_latitude, destination_longitude) VALUES (%s, %s, %s, %s)', (ele[0], ele[1], ele[2], ele[3])))
conn.commit()

2.) Użyj pomocników szybkiego wykonywania , jak execute_batch() or execute_values() .

3.) Koncentracja ciągów za pomocą mogrify() :

dataText = ','.join(cur.mogrify('(%s,%s,%s,%s)', row) for ele in coordinates)
cur.execute('INSERT INTO gmaps VALUES ' + dataText)
cur.commit()

Szczegółowe porównanie INSERT szybkości wykonywania spójrz na to test porównawczy.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 9.1:Jak łączyć wiersze w tablicy bez duplikatów, DOŁĄCZ do innej tabeli

  2. Klucze podstawowe z Apache Spark

  3. Nie znaleziono odpowiedniego sterownika po dołączeniu potrzebnych sterowników do wtyczki maven-assembly-plugin

  4. Relacja wiele-do-wielu w celu ustalenia, czy użytkownik polubił post

  5. Wykonywanie zapytań sekwencyjnych synchronicznie