diff --git a/src/bin/import.rs b/src/bin/import.rs
index e0f1b8138481714a8131382fcacadfd99affd4bd..8645379fa5b4db185dcec38afb7e6290c3e2a4ab 100644
--- a/src/bin/import.rs
+++ b/src/bin/import.rs
@@ -238,7 +238,27 @@ async fn get_edges(
                         })
                         .unzip();
 
-                    query!("INSERT INTO edges(from_id, to_id) SELECT UNNEST($1::INT[]), UNNEST($2::INT[]) ON CONFLICT DO NOTHING", &from_ids, &to_ids).execute(&p).await?;
+                    query!(
+                        r#"
+WITH unique_edges AS (
+    SELECT UNNEST($1::INT[]) AS from_id, UNNEST($2::INT[]) AS to_id
+)
+INSERT INTO edges(from_id, to_id)
+SELECT ue.from_id, ue.to_id
+FROM unique_edges ue
+WHERE NOT EXISTS (
+    SELECT 1
+    FROM edges e
+    WHERE e.from_id = ue.from_id
+        AND e.to_id = ue.to_id
+)
+ON CONFLICT DO NOTHING
+"#,
+                        &from_ids,
+                        &to_ids
+                    )
+                    .execute(&p)
+                    .await?;
 
                     statsd.count("edges.inserts", from_ids.len() as f64, &None);