library(data.table) data_table <- data.table(data) benchmark({ key_to_lookup <- select_random_key() time(data_table[col1 == key_to_lookup]) }) ## min max mean ## 0.00100 5.99400 0.06194