## DB.using has unique rows per Artist-Fan combination. Thus if we ignore the customerid col, 
##   we will have several duplicates per artistname.  Hence unique, first setting key to artistname (which unique will use)

## This optino is slower:
## OLD (slower):  ArtistNodes <- DB.using[, .SD[1], keyby=artistname, .SDcols=prop.cols.Artist]
## FASTER: 
ArtistNodes <- unique(setkey(DB.using[, c("artistname", prop.cols.Artist), with=FALSE], artistname))
key(ArtistNodes)

Meth1 <- quote({  DB.using[, .SD[1], keyby=artistname, .SDcols=prop.cols.Artist]  })
Meth2 <- quote({  unique(setkey(DB.using[, c("artistname", prop.cols.Artist), with=FALSE], artistname))  })
Meth3 <- quote({  setkey(DB.using[, unique(.SD, by="artistname"), .SDcols=c("artistname", prop.cols.Artist)], "artistname") })

mbench(Meth1, Meth2, Meth3)

Method 1 is definitely slower

mbench(Meth2, Meth3, check=FALSE)


                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                      RESULTS:
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


       Measuring 'elapsed' time.
       Units: milliseconds                          Number of Repetitions: 200

          Expr       relative      Median Time       MAD      (2xMAD)/Median
      ------------|-------------|----------------|---------|-------------------
         Meth2           1              13          0.13           2.0 %
         Meth3         1.036          13.47         0.25           3.7 %