sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor tager psycopg2 INSERT så lang tid at køre i en løkke, og hvordan fremskynder jeg det?

Der er flere muligheder for at fremskynde indsættelse af massedata.

1.) commit() efter løkken er færdig:

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.) Brug psycopg2's hjælpere til hurtig udførelse , såsom execute_batch() or execute_values() .

3.) Strengkoncentration ved hjælp af mogrify() :

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

For en detaljeret sammenligning af INSERT udførelseshastigheder se dette benchmark.




  1. Hvordan ved man, hvor mange mysql-forespørgsler et php-script har lavet?

  2. SQL-fejl 1406 Data for lange til kolonne

  3. Tabeller og indekser vs. HDD og SSD

  4. Sådan håndteres Ruby on Rails-fejl:Installer venligst postgresql-adapteren:`gem install activerecord-postgresql-adapter'