diff --git a/server/djrandom/fingerprint/dedup.py b/server/djrandom/fingerprint/dedup.py
index daf8b89082e952555a04aa6cd8d573e1ea31c9de..585a16a3f4199229e0866d072f129a1b666e9cb5 100644
--- a/server/djrandom/fingerprint/dedup.py
+++ b/server/djrandom/fingerprint/dedup.py
@@ -64,15 +64,16 @@ class DeDuper(object):
         log.debug('loading in-memory fingerprint database...')
         start = time.time()
         fp.erase_database(local=True, really_delete=True)
-        mp3s = MP3.query.filter(
-            (MP3.artist == u'bonobo') 
-            & (MP3.state == MP3.READY)
-            & (MP3.has_fingerprint == True))
-        for mp3 in mp3s:
-            code = self._generate_code_json(mp3.echoprint_fp, mp3.sha1)
+        # Skip the ORM and directly query the SQL layer.
+        q = select([Fingerprint.sha1, Fingerprint.echoprint_fp],
+                    (MP3.sha1 == Fingerprint.sha1)
+                    & (MP3.state == MP3.READY)
+                    & (MP3.has_fingerprint == True))
+        for row in engine.execute(q):
+            code = self._generate_code_json(row.echoprint_fp, row.sha1)
             if not code:
                 continue
-            self.codes[mp3.sha1] = code['fp']
+            self.codes[row.sha1] = code['fp']
             fp.ingest(code, do_commit=False, local=True)
         elapsed = time.time() - start
         log.debug('loaded in-memory fingerprint database in %g seconds' % elapsed)