diff --git a/R/data-model.R b/R/data-model.R
index b8d7dd4846ba8fb58ad126ec2e400f37cca4c2df..973b9223caf1fb5268978e0f5c71d664391b5b0d 100644
--- a/R/data-model.R
+++ b/R/data-model.R
@@ -105,23 +105,27 @@ make_db_precursors <- function(m) {
 
 
 empty_cgram_ms1 <- function(n=0L) {
-    data.table(file=character(n),
-               cgmidx=integer(n),
-               precid=integer(n),
-               scan=integer(n),
-               rt=numeric(n),
-               intensity=numeric(n))
+    r = data.table(file=character(n),
+                   cgmidx=integer(n),
+                   precid=integer(n),
+                   scan=integer(n),
+                   rt=numeric(n),
+                   intensity=numeric(n))
+    setkey(r,precid,rt)
+    r
 }
 
 empty_cgram_ms2 <- function(n=0L) {
-    data.table(precid=integer(n),
-               ce=numeric(n),
-               scan=integer(n),
-               idx=integer(n),
-               rt=numeric(n),
-               intensity=numeric(n))
+    r = data.table(precid=integer(n),
+                   ce=numeric(n),
+                   scan=integer(n),
+                   idx=integer(n),
+                   rt=numeric(n),
+                   intensity=numeric(n))
+    setkey(r,precid,ce,idx)
+    r
                
-    }
+}
 
 
 empty_spectra_table <- function() {